• 大小: 44.25MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-08
  • 语言: C/C++
  • 标签: MFC  适应屏幕  

资源简介

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\link-cvtres.read.1.tlog

     文件          2  2019-06-11 11:04  VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\link-cvtres.write.1.tlog

     文件       2220  2019-06-11 11:04  VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\link.command.1.tlog

     文件       6086  2019-06-11 11:04  VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\link.read.1.tlog

     文件       1462  2019-06-11 11:04  VC++窗口和控件自适应屏幕尺寸改\SelfResizing\SelfResizing\Release\link.write.1.tlog

     文件        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个文件信息

评论

共有 条评论