MFC最大化显示任务栏
来源:互联网 发布:淘宝视觉营销全攻略 编辑:程序博客网 时间:2024/05/24 02:42
今天2016-07-23 13:26:24又来处理最大化时,窗口任务栏隐藏的bug。
前面已经用了
MINMAXINFO的结构体:typedef struct { POINT ptReserved; //不用 POINT ptMaxSize; //最大范围 POINT ptMaxPosition; //最大的放置点 POINT ptMinTrackSize; //最小拖动范围 POINT ptMaxTrackSize; //最大拖动范围} MINMAXINFO;
http://blog.csdn.net/whh_1218/article/details/8495649;这里的方法,感觉缺什么,有些变量不知道。也知道怎么去处理OnGetMinMaxInfo()消息函数了。
void MainDialog::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) { // TODO: Add your message handler code here and/or call default //lpMMI->ptMaxSize.y = GetSystemMetrics(SM_CYFULLSCREEN) + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYDLGFRAME); CRect rt; SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0); lpMMI->ptMaxSize.x = rt.Width(); lpMMI->ptMaxSize.y = rt.Height(); lpMMI->ptMaxTrackSize.x = rt.Width(); lpMMI->ptMaxTrackSize.y = rt.Height(); CDialog::OnGetMinMaxInfo(lpMMI);}
这样的效果,竖放的时候不好,将窗口的大小是确定了,但是左上角的坐标不对!
然后学习了,确定任务栏大小的方法,以为真的要分情况,讨论窗口的大小了。
获得桌面工作区大小,即不包括任务栏的大小,制作窗口全屏时经常用到,方法如下:
RECT rt; SystemParametersInfo(SPI_GETWORKAREA,0,(PVOID)&rt,0);
CRect rect;
::GetWindowRect(::FindWindow(_T("Shell_TrayWNd"), NULL), &rect); //获取任务栏的大小
获得任务栏高度与宽度方法有二:
1.判断位置RECT rt;SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0) // 获得工作区大小 //任务栏在下面的高度 int y = ::GetSystemMetrics(SM_CYSCREEN)-rt.Height(); int y = rt.top; //上面 int y = rt.left; // 左 int y = ::GetSystemMetrics(SM_CXSCREEN)-rt.Width(); // 右
2.得到高度,然后可判断位置CRect rect; CWnd *pWndPrev= FindWindow("Shell_TrayWnd", ""); // 调用本对象即this的Findwindow函数,返回窗口指针 pWndPrev->GetWindowRect(&rect); //rect.bottom-rect.top 就是任务栏的高度 if(rect.top>0) //下面if(rect.left>0) //左面 或者CWnd* p = NULL ; HWND hwnd = ::FindWindow("Shell_TrayWnd",NULL) ; // 调用公有的FindWindow函数,返回窗口句柄 if(hwnd) { p = CWnd::FromHandle(hwnd) ; } p->GetWindowRect();//包含有宽度
最后突然想带了既然SystemParametersInfo(SPI_GETWORKAREA, 0, &rt, 0);都获得了工作窗体的大小,就直接 MoveWindow(rt);就可以了,实事证明是可行了。只不过移动后返回还是有bug;不过可以接受了。
再次证明有时候,不能只是套别人的方法,自己还是要动动脑,用自己的方法去实现。要相信自己,有的想法是行得通的。
0 0
- MFC最大化显示任务栏
- WPF自定义窗口最大化显示任务栏
- mfc应用窗口最大化显示
- 窗体在任务栏显示 MFC
- VS2013中MFC程序最大化运行遮盖任务栏的解决办法
- MFC隐藏/显示最大化、最小化按钮
- MFC 单文档窗口最大化显示
- MFC 单文档框架最大化显示
- MFC单文档窗口最大化显示
- mfc学习之win7任务栏显示进度
- MFC 使程序不在任务栏显示
- MFC隐藏和显示任务栏与标题栏
- MFC 无标题栏窗口最大化会把任务栏给遮住,如何解决这个问题?
- MFC学习笔记——如何使窗口最大化,但不遮盖任务栏
- 窗口最大化禁止遮挡任务栏
- WPF最大化避免覆盖任务栏
- VC/MFC里使窗口显示默认最大化
- VC/MFC 里使窗口显示默认最大化
- malformed or corrupted AST file: 'could not find file '/Users/victor/Desktop/ODCai/DCHeader.pch' ref
- css3实现一个div设置多张背景图片及background-image属性
- 23种设计模式
- 代理模式
- MFC记住上次路径---遇到的一些问题
- MFC最大化显示任务栏
- 从零开始搭建Android基础框架(构思篇)
- matlab图像基础知识
- 数字图像处理------中值滤波
- mysql未知约束名删除约束
- 数字图像处理-----直方图均衡化
- 使用SEC_CASE_SENSITIVE_LOGON参数控制密码大小写敏感性
- VS2015 新建项目提示 未将对象引用设置到对象的实例 解决方法
- C++读取、旋转和保存bmp图像文件编程实现