资源简介
MFC 窗口适应屏幕大小,控件适应窗口大小。最近遇到换了不同显示器程序显示不全的问题。
然后在网上找到了控件适应窗口的程序,奈何还是没找到完全符合我要求的,于是还是自己来实现窗口自适应屏幕大小的功能吧。
我的最初想法是,我在oninit获取屏幕大小,然后调用窗口显示函数设置起点为0,0,窗口大小为屏幕长和宽,试了一下,可以,但不知道还有没有更简单方法或者有什么隐形bug。
代码片段和文件信息
#include “stdafx.h“
#include “SelfResizeWindow.h“
CSelfResizeWindow::CSelfResizeWindow(int wOff int hOff)
{
m_Dlg = NULL;
m_WidthOff = wOff; // 10
m_HeightOff = hOff;// 10
m_W = GetSystemMetrics(SM_CXSCREEN);
m_H = GetSystemMetrics(SM_CYSCREEN);
m_ChildWndList.clear();
}
CSelfResizeWindow::~CSelfResizeWindow()
{
m_Dlg = NULL;
m_ChildWndList.clear();
}
bool CSelfResizeWindow::Rectify()
{
if (m_Dlg == NULL){
return false;
}
RECT rct;
m_Dlg->GetClientRect(&rct);
int w = rct.right - rct.left;
int h = rct.bottom - rct.top;
double wTimes = w * 1.0 / m_W;
double hTimes = h * 1.0 / m_H;
map::iterator it = m_ChildWndList.begin();
while (it != m_ChildWndList.end())
{
CWnd* w = m_Dlg->GetDlgItem(it->first);
RECT rct = it->second;
rct.left *= wTimes;
rct.right *= wTimes;
rct.top *= hTimes;
rct.bottom *= hTimes;
if (w){
w->MoveWindow(&rct FALSE);
}
it++;
}
m_Dlg->Invalidate(TRUE);
return true;
}
bool CSelfResizeWindow::Init(CDialog*dlg int beginId int endId)
{
if (dlg == NULL){
return false;
}
m_Dlg = dlg;
m_ChildWndList.clear();
RECT parentRct;
m_Dlg->GetClientRect(&parentRct);
m_W = parentRct.right - parentRct.left;
m_H = parentRct.bottom - parentRct.top;
for (int i=beginId; i<=endId; i++){
CWnd* w = m_Dlg->GetDlgItem(i);
if (w){
RECT rct;
w->GetWindowRect(&rct);
m_Dlg->ScreenToClient(&rct);
m_ChildWndList.insert(make_pair(i rct));
}
}
return true;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 88473600 2019-06-11 15:33 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\ipch\selfresizing-43d9adda\selfresizing-b7a7f49b.ipch
文件 92160 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\Release\SelfResizing.exe
文件 5876736 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\Release\SelfResizing.pdb
文件 2827 2015-08-31 14:05 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\ReadMe.txt
文件 8480 2015-08-31 14:33 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\BuildLog.htm
文件 3534 2019-06-11 11:03 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\cl.command.1.tlog
文件 96436 2019-06-11 11:03 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\CL.read.1.tlog
文件 2992 2019-06-11 11:03 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\CL.write.1.tlog
文件 2 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\li
文件 2 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\li
文件 2220 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\li
文件 6086 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\li
文件 1462 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\li
文件 944 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\mt.command.1.tlog
文件 67 2015-08-31 14:33 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\mt.dep
文件 1124 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\mt.read.1.tlog
文件 570 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\mt.write.1.tlog
文件 692 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\rc.command.1.tlog
文件 3360 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\rc.read.1.tlog
文件 354 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\rc.write.1.tlog
文件 233293 2019-06-11 10:57 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizeWindow.obj
文件 381 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizing.exe.intermediate.manifest
文件 106 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizing.lastbuildstate
文件 2482 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizing.log
文件 168257 2019-06-11 10:57 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizing.obj
文件 30867456 2019-06-11 10:57 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizing.pch
文件 69684 2019-06-11 11:04 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizing.res
文件 713 2019-06-11 10:57 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizing.vcxprojResolveAssemblyReference.cache
文件 0 2019-06-11 10:57 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizing.write.1.tlog
文件 183962 2019-06-11 11:03 VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\SelfResizingDlg.obj
............此处省略47个文件信息
- 上一篇:逐点比较法插补原理VC程序设计
- 下一篇:VC++6.0安装包中文版
相关资源
- mfc 画多个矩形框,可选中任意一个移
- MFC属性表单
- MFC框架 网络版五子棋 包含游戏大厅
- MFC读取RTSP视频流
- mfc制作的圆形时钟
- 五子棋大作业源码 .zip
- Excel-demo
- 基于mfc的smtp客户端程序
- MFC CCriticalSection 关键段
- C++后缀表达式计算器MFC功能强大
- MFC 视频播放器
- MFC 实时曲线绘制
- 图书馆管理系统MFC版
- 基于VS2010的MFC对话框计算器程序
- MFC显示tiff图像
- mfc按钮美化275689
- STK 与 MFC通信
- MFC 中使用 OpenGL 1.0非微软版本,而是
- VTKMFC显示
- MFC单文档绘图例程
- Programming Windows with MFC
- 深入浅出MFC简体高清pdf版
- 兄弟原厂中文维修手册-DCP-1518-1519-M
- MFC中ListCtrl添加图标,更改图标
- 数字图像处理实习程序
- VS平台下的MFC版坦克大战
- MFC实现的简单的画图工具
- ADO连接数据库-基于mfc的简单实现
- MFC实现迷宫搜索——Easy参考
- SMTP服务器端MFC
评论
共有 条评论