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)】相关文章:
Vb中控件的自动排列03-23
广西壮族自治区财政厅会计继续教育报名登录入口:https://czt.gxzf.gov.cn/kjgl/03-23
运动主题团日活动策划03-23
2023年广东梅州中考成绩查询时间及查分入口[7月7日起]03-23
2024年江苏中级导游等级考试准考证打印时间及入口(11月18日9:00起)03-23
盐阜大众报报业集团(盐城)公开招聘《东方生活报》编辑记者的公告 2月25日到3月3日报名03-23
2020年高级会计师《高级会计实务》知识点:社会融资方式03-23
英语口语话题:开立账户03-23
计算机应用技术英语简历范文大全03-23
党员四风问题自查材料03-23
高一叙事作文:雨伞下的触动_800字03-23
