登 录
基本思路:每隔一段时间查看一下鼠标座标,以确定是不动,弹出,还是缩进.
新建一个dialog,并加入一个timer
BOOL CPracticalDlg::OnInitDialog() { CDialog::OnInitDialog(); // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 SetTimer(0,100,NULL); //设置定时器,每0.1秒,查看一次鼠标. return TRUE; // 除非将焦点设置到控件,否则返回 TRUE }
响应WM_TIMER
void CPracticalDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CRect rc,rect; GetWindowRect(&rc); //得到相对于屏幕的窗口座标 rect.CopyRect(&rc); CPoint pt; GetCursorPos(&pt); //得到鼠标座标 if(rect.top < 0 && PtInRect(&rect,pt)) //如是是缩进,并且鼠标在窗口上则弹出 { rect.top = 0; MoveWindow(rect.left,rect.top,rc.Width(),rc.Height()); } else if(rect.top < 3 && rect.top > -3 && !PtInRect(&rect,pt)) //如果鼠标不在窗口上,并且窗口顶端离桌面顶端很进则缩进 { rect.top = 3 - rect.Height(); MoveWindow(rect.left,rect.top,rc.Width(),rc.Height()); } CDialog::OnTimer(nIDEvent); }
抱歉!评论已关闭.