b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

mfc新增位图_SetTimer(1,1000,NULL)_cformview

电脑杂谈  发布时间:2017-02-17 09:00:03  来源:网络整理

mfc新增位图_cformview_SetTimer(1,1000,NULL)

基于单文档的CFormView动态调整对话框的尺寸并成比例调整部署控件

如果你正在开发基于单文档程序,使用了CFormView基类实现多个窗口的显示,那么这个文档可能会给你提供些许帮助。

一、实现对话框填充客户区

当我们添加了资源对话框时,它的尺寸在客户区显示时是不会随着窗口的大小调整的,当框架尺寸小于它的尺寸时,还出现了滚动条,操作麻烦同时视觉效果也不良好。

思路

根据客户区的大小调整资源对话框的大小,而客户区大小由父级的框架进行设定。

步骤

1、 根据屏幕分辨率设定框架的尺寸

请注意,我们不能将在InitInstance中ShowWindow参数SW_SHOW 直接改为SW_SHOWMAXIMIZED。虽然窗口是最大化了但是我们的在CFormView中使用GetClientRect可以看到客户区的尺寸仍然是原来的大小。

如果在PreCreateWindow或者OnCreate函数中设定框架的尺寸时,发现并没有起到作用。

正确的方法是在MainFrame中重载OnGetMinMaxInfo,并根据屏幕分辨率设定窗口的尺寸。

//依据屏幕分辨率设置框架大小

voidCMainFrame::OnGetMinMaxInfo(MINMAXINFO* lpMMI)

{

// TODO: 在此添加消息处理程序代码和/或调用默认

int cx = GetSystemMetrics(SM_CXSCREEN);

int cy = GetSystemMetrics(SM_CYSCREEN);

lpMMI->ptMinTrackSize.x= cx;

lpMMI->ptMaxTrackSize.x = cx;

lpMMI->ptMaxTrackSize.y = cy;

lpMMI->ptMinTrackSize.y = cy;

CFrameWnd::OnGetMinMaxInfo(lpMMI);

}

并在PreCreateWindow中设定窗口的初始坐标。

cs.x= 0;cs.y = 0;

2、 根据客户区尺寸设定对话框的尺寸

在View中的OnInitialUpdate函数进行操作,这是View第一个执行的函数。

mfc新增位图_cformview_SetTimer(1,1000,NULL)

CRect rect;

GetClientRect(&rect);

MoveWindow(&rect);

3、根据对话框大小动态调整控件的大小和位置

使用了网上获得一个方法,并进行了修改具体如下,视类中添加成员变量和成员函数:

voidSetControlInfo(WORD CtrlID);

protected:

intm_old_cx,m_old_cy;

CDWordArraym_control_info;

在OnInitialUpdate初始化:

CSizesz = GetTotalSize();

m_old_cx= sz.cx;

m_old_cy=sz.cy;

加控件信息的函数定义:

voidCTestFormView::SetControlInfo(WORD CtrlID){

m_control_info.Add(CtrlID);

}

添加OnMySize函数

voidCTestFormView:: OnMySize (UINT nType,int cx,int cy){

if(cx==0 || cy ==0){

cx =800;

cy = 600;

}

floatdx_percent = (m_old_cx==0)?1:(float)((float)cx/(float)m_old_cx);


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-32924-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...