c#代码 翻译成vc++

你妹的特盗不 2010-04-17 04:57:16

这段是WM_MOUSE_LL响应函数里面的
private void HookOnMouseActivity(object sener, HookEx.MouseExEventArgs e) {
Point location = e.Location;

if (e.Button == MouseButtons.Left) {
Rectangle captionRect = new Rectangle(this.Location, new Size(this.Width, SystemInformation.CaptionHeight));
if (captionRect.Contains(location)) {
SetWindowLong(this.Handle, GWL_EXSTYLE,
(int)GetWindowLong(this.Handle, GWL_EXSTYLE) & (~WS_DISABLED));
SendMessage(this.Handle, WM_SETFOCUS, IntPtr.Zero, IntPtr.Zero);
} else {
SetWindowLong(this.Handle, GWL_EXSTYLE,
(int)GetWindowLong(this.Handle, GWL_EXSTYLE) | WS_DISABLED);
}
}
}


翻译成下面的vc++代码


g_hwnd 为我的程序的HWND 给值在我的dlg程序的 initdialog里面,g_hwnd=this->m_hWnd;
//这段是WM_MOUSE_LL响应函数里面的
if(nCode==HC_ACTION)
{
if(wParam==WM_LBUTTONDOWN||wParam==WM_LBUTTONUP)
{
CRect rectwindow;
::GetWindowRect(g_hwnd,&rectwindow);

MSLLHOOKSTRUCT* msl = (MSLLHOOKSTRUCT *)lParam;
if(rectwindow.PtInRect(msl->pt))
{
SetWindowLong(g_hwnd, GWL_EXSTYLE,GetWindowLong(g_hwnd, GWL_EXSTYLE) & (~WS_DISABLED));
SendMessage(g_hwnd, WM_SETFOCUS, 0, 0);
}
else
{
SetWindowLong(g_hwnd, GWL_EXSTYLE,GetWindowLong(g_hwnd, GWL_EXSTYLE)|WS_DISABLED);
}
}
}

请问这样转换对不对,还有,this.handle 就是当前窗口的 HWND吧
...全文
78 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
你妹的特盗不 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xingyuebuyu 的回复:]
如果在窗体中那this.handle 就是当前窗口的 HWND

你那样转的逻辑不对,C#中是得到标题栏的区域,判断是在标题栏的区域按下左键就进行处理,而你的VC++是得到指定窗口的边框矩形的尺寸.判断是在窗口的边框矩形的尺寸内按下左键就进行处理.判断处理的区域不一.

http://hi.baidu.com/yh121212/blog/item/521172c646b7211b9c163……
[/Quote]

谢谢,就是如你所说,SystemInformation.CaptionHeight这个值没有搞清楚
结贴
c++ 有API可以计算的
xingyuebuyu 2010-04-19
  • 打赏
  • 举报
回复
如果在窗体中那this.handle 就是当前窗口的 HWND

你那样转的逻辑不对,C#中是得到标题栏的区域,判断是在标题栏的区域按下左键就进行处理,而你的VC++是得到指定窗口的边框矩形的尺寸.判断是在窗口的边框矩形的尺寸内按下左键就进行处理.判断处理的区域不一.

http://hi.baidu.com/yh121212/blog/item/521172c646b7211b9c163d3c.html
你需要算出标题栏的区域.
Peter200694013 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lfs09 的回复:]
我晕死,这简单送人的帖子也没人来,怎么结贴呢
[/Quote]
c++懂得太少....
帮顶...
你妹的特盗不 2010-04-19
  • 打赏
  • 举报
回复
我晕死,这简单送人的帖子也没人来,怎么结贴呢

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧