关于windows xp下的ClipCursor 本帖最后由 superhj1987 于 2010-03-30 14:12:02 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个应该让rcClip有全局作用域吧你把它作为窗口类的成员变量再试试 试了一下,在OnInitDialog中是不起作用的,个人理解是窗口还没显示出来,另外一个可能是在OnInitDialog中的窗口坐标和显示出来窗口坐标不一样,移动了,所以不起作用,在OnPaint中是可以的,但只要一移动窗口,ClipCursor就会失效,void CDialogTestDlg::OnPaint(){ CRect rcClip; GetWindowRect(&rcClip); bool bRet = ClipCursor(&rcClip); if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); }} 在OnInitDialog中,你查看下GetWindowRect(&rcClip); 中rcClip的值就知道了,这时获得值的左上角的点并不是窗口显示后的点 把代码写在OnPaint有用,但是鼠标不是应该只在对话框内移动吗,我的上面怎么可以在屏幕上随便移动? 关于BCG样式问题 多线程时的CreateDispatch问题 IE浏览器调用什么函数弹出保存对话框? 如何获取选择项目的文本 VC++一般如何进行版本控制和团队开发? LVS_EX_CHECKBOXES类型的列表控件,怎样得到我选择的那些item? 刚学数据库,用VC以ODBC连接ACCESS数据库的问题。 50分 求字符串处理函数 请教VC多线程中串口编程的问题 简单问题,mfc中各种函数位置问题(函数放在哪?) TCP socket如何清空发送缓冲区 关于SSDT HOOK
你把它作为窗口类的成员变量再试试
{
CRect rcClip;
GetWindowRect(&rcClip);
bool bRet = ClipCursor(&rcClip); if (IsIconic())
{
CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
中rcClip的值就知道了,这时获得值的左上角的点并不是窗口显示后的点