m_isSizeChanged = FALSE;m_isSetTimer = FALSE;m_hsFinished = TRUE;m_hiding = FALSE;m_oldWndHeight = MINCY;m_taskBarHeight = 30;m_edgeHeight = 0;m_edgeWidth=0;m_hideMode = HM_NONE;
完成了一些初始的工作,那么就开始进入关键的函数实现了。首先是在OnCreate做些窗口的初始化和获得一些系统信息。
代码一
int CQQHideWndDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CDialog::OnCreate(lpCreateStruct) == -1)return -1; // TODO: Add your specialized creation code here//获得任务栏高度CWnd* p;p = this->FindWindow("Shell_TrayWnd",NULL);if(p != NULL){CRect tRect;p->GetWindowRect(tRect);m_taskBarHeight = tRect.Height();}//修改风格使得他不在任务栏显示ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);//去掉关闭按键(如果想画3个按键的话)//ModifyStyle(WS_SYSMENU,NULL);//获得边缘高度和宽度m_edgeHeight = GetSystemMetrics(SM_CYEDGE);m_edgeWidth = GetSystemMetrics(SM_CXFRAME);return 0;}
接着如何知道鼠标进入或移出窗口呢?在前面我已经证明了WM_MOUSEMOVE和WM_MOUSELEAVE不符合我们的要求,于是我用了WM_ NCHITTEST这个消息,你可以看到我在这个消息响应函数中用了两个SetTimer,一个用于检测鼠标是否离开,一个用于伸缩过程,不管你喜欢不喜欢,要达到第7点和第11点,这个是必须的,考虑的效率问题,在不需要的时候关闭这些Timer就好了。
【VisualC++设计超强仿QQ自动伸缩窗口(2)】相关文章:
四六级作文:一个星期一篇作文训练(2)02-06
2024上半年江苏小学教师资格考试笔试成绩查询时间及查分入口(4月12日起)02-06
每天10组词汇,冲刺口译考试(二十七)02-06
小学必会的Be动词的用法语法知识02-06
2017年3月广东公共英语等级报名入口02-06
高招专家解读8组疑似相同专业 (2)02-06
2024年安徽淮北濉溪县口子实验高级中学诚聘各科优秀教师公告(80人)02-06
2025国考报名人数统计:2025国考报名竞争人数最多的十大岗位(截至20日16时)02-06
农村公路建设调研报告02-06
