永发信息网

C++鼠标移动事件,移动控件位置

答案:2  悬赏:0  手机版
解决时间 2021-02-23 09:33
  • 提问者网友:你给我的爱
  • 2021-02-22 13:47
hWnd = CreateWindow(szWindowClass, szTitle, WS_SYSMENU|WS_VISIBLE,
CW_USEDEFAULT, 0, 300, 485, NULL, NULL, hInstance, NULL);
//这个是我创建的空白主窗口

hWndButton=CreateWindow("button","close",BS_PUSHBUTTON|WS_VISIBLE|WS_CHILD,50,110,180,100,hWnd,HMENU(IDC_MYBUTTON),NULL,NULL);//这个是我创建的一个按钮控件

那么问题来了,我拖动窗体空白位置的时候WM_MOUSEMOVE事件有效,可以移动主窗口

但是当我点住控件上面进行拖动,则WM_MOUSEMOVE无效无法拖动

case WM_COMMAND:
wmId = LOWORd(wParam);
wmEvent = HIWORd(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDC_MYBUTTON: //我的控件

switch(wmEvent)
{
case WM_LBUTTONDOWN:
CusorX1 = LOWORd( lParam ); // 鼠标横坐标
CusorY1 = HIWORd( lParam ); // 鼠标纵坐标
Now_hWnd=GetActiveWindow();
GetWindowRect(Now_hWnd,&rect);
MouseFlag=1;
break;

case WM_LBUTTONUP:
MouseFlag=0;
break;

case WM_MOUSEMOVE:
//if(MouseFlag==1)
{
CusorX2 = LOWORd( lParam ); // 鼠标横坐标
CusorY2 = HIWORd( lParam ); // 鼠标纵坐标
GetWindowRect(g_hWnd,&rect);
MoveWindow(g_hWnd,rect.left+(CusorX2-CusorX1),rect.top+(CusorY2-CusorY1),
(rect.right-rect.left),(rect.bottom-rect.top),1);
}
break;

}
break;

我新手…希望能给帮忙修改一下代码…资料实在查不到,困扰我2天了…
最佳答案
  • 五星知识达人网友:掌灯师
  • 2021-02-22 14:40
111
全部回答
  • 1楼网友:妄饮晩冬酒
  • 2021-02-22 16:00
因为你点鼠标也会有轻微移动的程序是很敏感的 你可以把鼠标放到你的程序界面外边然后使用回车来打提示框的确定就不出来
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯