鼠标消息 移动对话框的问题

mtj520 2012-02-28 04:31:12
我现在是做个这样的功能,当鼠标移动到对话框的时候,会有一个半透明的显示信息的子对话框显示出来。
这个对话框的高宽为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;

求高手指点。谢谢
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgdqlc 2012-03-02
  • 打赏
  • 举报
回复
对话框初始化的时候setwindowpos是否有问题,在msgDLg->Create(IDD_MESSAGEDLG);之后
msgDLg->setwindowpos(。。。。。);试试
ILoveThisSite 2012-03-02
  • 打赏
  • 举报
回复
在透明对话框初始化程序里面跟踪调试一下啊,看有没有进到里面
mtj520 2012-02-29
  • 打赏
  • 举报
回复
我没有MoveWindow.因为我在对话框初始化的时候已经setwindowpos了,
msgDLg->m_point = point; 这就是传的坐标给对话框。
疯狂-的-蜗牛 2012-02-28
  • 打赏
  • 举报
回复
以前做的一个小程序,随着鼠标的移动透明对话框跟着移动时:
把窗口显示出来了后,设置一个定时器,然后用MoveWindow()移动窗体
我有事,只能把以前的代码贴出来看看

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);
shn521 2012-02-28
  • 打赏
  • 举报
回复
MoveWindow函数 ?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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