鼠标消息 移动对话框的有关问题
鼠标消息 移动对话框的问题
我现在是做个这样的功能,当鼠标移动到对话框的时候,会有一个半透明的显示信息的子对话框显示出来。
这个对话框的高宽为200,假设屏幕分辨率为1440*900的,我的鼠标放在X点大于1240,我就想把对话框移动到上边的位置,当鼠标移动到Y点大于700以上,我就想把对话框移动到左边来。代码如下。可是老是出不来。也不知道问题出哪,如果我按照鼠标当前的位置显示对话框还是没问题的。
int cx = LOWORD(lParam); //鼠标在窗口中的X坐标
int cy = HIWORD(lParam);//鼠标在窗口中的Y坐标
CPoint point(cx, cy);
// int iScreenWidth = GetSystemMetrics(SM_CXSCREEN);
// int iScreenHeigh = GetSystemMetrics(SM_CYSCREEN);
ClientToScreen(&point); //获得鼠标在屏幕中的坐标
if (point.x >1240)
{
point.x -= 200;
}
msgDLg = new CMyMsgDlg;
msgDLg->m_point = point;
msgDLg->Create(IDD_MESSAGEDLG);
msgDLg->ShowWindow(SW_SHOW);
return 0;
求高手指点。谢谢
------解决方案--------------------
MoveWindow函数 ?
------解决方案--------------------
以前做的一个小程序,随着鼠标的移动透明对话框跟着移动时:
把窗口显示出来了后,设置一个定时器,然后用MoveWindow()移动窗体
我有事,只能把以前的代码贴出来看看
我现在是做个这样的功能,当鼠标移动到对话框的时候,会有一个半透明的显示信息的子对话框显示出来。
这个对话框的高宽为200,假设屏幕分辨率为1440*900的,我的鼠标放在X点大于1240,我就想把对话框移动到上边的位置,当鼠标移动到Y点大于700以上,我就想把对话框移动到左边来。代码如下。可是老是出不来。也不知道问题出哪,如果我按照鼠标当前的位置显示对话框还是没问题的。
int cx = LOWORD(lParam); //鼠标在窗口中的X坐标
int cy = HIWORD(lParam);//鼠标在窗口中的Y坐标
CPoint point(cx, cy);
// int iScreenWidth = GetSystemMetrics(SM_CXSCREEN);
// int iScreenHeigh = GetSystemMetrics(SM_CYSCREEN);
ClientToScreen(&point); //获得鼠标在屏幕中的坐标
if (point.x >1240)
{
point.x -= 200;
}
msgDLg = new CMyMsgDlg;
msgDLg->m_point = point;
msgDLg->Create(IDD_MESSAGEDLG);
msgDLg->ShowWindow(SW_SHOW);
return 0;
求高手指点。谢谢
------解决方案--------------------
MoveWindow函数 ?
------解决方案--------------------
以前做的一个小程序,随着鼠标的移动透明对话框跟着移动时:
把窗口显示出来了后,设置一个定时器,然后用MoveWindow()移动窗体
我有事,只能把以前的代码贴出来看看
- C/C++ code
CPoint point; ::GetCursorPos(&point); int xPos,yPos; if(point.x>(mX-163)&&point.y>(mY-158)) { xPos=point.x-163; yPos=point.y-158; } else if(point.x>(mX-163)) { xPos=point.x-163-10; yPos=point.y+5; } else if(point.y>(mY-158-25)) { xPos=point.x-5; yPos=point.y-158-10; } else { xPos=point.x+5; yPos=point.y+30; } pTransDlg->MoveWindow(xPos,yPos,163,158,TRUE);
------解决方案--------------------
在透明对话框初始化程序里面跟踪调试一下啊,看有没有进到里面
------解决方案--------------------
对话框初始化的时候setwindowpos是否有问题,在msgDLg->Create(IDD_MESSAGEDLG);之后
msgDLg->setwindowpos(。。。。。);试试