VC++窗口和控件自适应屏幕尺寸


自定义类CSelfResizeWindow实现窗口和控件的自适应调整,根据屏幕尺寸调整大小。实现的非常简单,而且通用性很好,对于控件和窗体都有好用,只要继承这个自定义类,并在你的对话框类的OnInitDialog()函数和OnSize()函数中各加入一行代码就全部OK啦!
资源截图
代码片段和文件信息
#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;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      93184  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingReleaseSelfResizing.exe

     文件    4942848  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingReleaseSelfResizing.pdb

     文件       2827  2015-08-31 14:05  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReadMe.txt

     文件       8480  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleaseBuildLog.htm

     文件         67  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleasemt.dep

     文件     223005  2015-08-31 14:09  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleaseSelfResizeWindow.obj

     文件        851  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleaseSelfResizing.exe.intermediate.manifest

     文件     150877  2015-08-31 14:15  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleaseSelfResizing.obj

     文件   38993920  2015-08-31 14:09  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleaseSelfResizing.pch

     文件      69684  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleaseSelfResizing.res

     文件     168511  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleaseSelfResizingDlg.obj

     文件    4550068  2015-08-31 14:09  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleasestdafx.obj

     文件    1108992  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleasevc90.idb

     文件    3788800  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingReleasevc90.pdb

     文件      67777  2007-11-28 16:21  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizing
esSelfResizing.ico

     文件        368  2015-08-31 14:05  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizing
esSelfResizing.rc2

     文件        776  2015-08-31 14:10  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizing
esource.h

     文件       1534  2015-08-31 14:09  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizeWindow.cpp

     文件        593  2015-08-31 14:07  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizeWindow.h

     文件     105668  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizing.aps

     文件       1731  2015-08-31 14:05  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizing.cpp

     文件        481  2015-08-31 14:05  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizing.h

     文件       5349  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizing.rc

     文件       5604  2015-08-31 14:09  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizing.vcproj

     文件       1427  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizing.vcproj.EFDD10259FB44A0.Administrator.user

     文件       2567  2015-08-31 14:33  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizingDlg.cpp

     文件        538  2015-08-31 14:15  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingSelfResizingDlg.h

     文件        145  2015-08-31 14:05  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingstdafx.cpp

     文件       1854  2015-08-31 14:05  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizingstdafx.h

     文件       1030  2015-08-31 14:05  VC++窗口和控件自适应屏幕尺寸SelfResizingSelfResizing argetver.h

............此处省略13个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)