首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

SDI单文档中动态的批改客户区的大小

2013-01-09 
SDI单文档中动态的修改客户区的大小本帖最后由 xxxwrq 于 2012-12-22 15:26:37 编辑大神 求指点。SDI单文档

SDI单文档中动态的修改客户区的大小
本帖最后由 xxxwrq 于 2012-12-22 15:26:37 编辑 大神 求指点。SDI单文档中动态的修改客户区的大小    大概思路是什么?  例如  我点了最大化按钮后  view的内容应该与整个窗口大小等比例扩大。
求具体到那个类那个方法即可。关键字:等比例扩大,缩小. 

[解决办法]
处理WM_SIZE消息对应OnSize函数

每次OnSize保存之前的cx和cy(长和宽)
最大化后会生成新的cx和cy的,然后与原来的对比形成一个系数。

视图内所有控件MoveWindow的时候入参数*这个系数
[解决办法]
处理WM_SIZE消息


void C***View::OnSize(UINT nType, int cx, int cy) 
{
CFormView::OnSize(nType, cx, cy);

if (GetDlgItem(IDC_ST_RFT_MAN)->GetSafeHwnd())
{
GetDlgItem(IDC_ST_RFT_MAN)->MoveWindow(2, (cy-8)*3/5-4, 80, 12);
GetDlgItem(IDC_ST_SYS_LOG)->MoveWindow((cx-6)/2+6, (cy-8)*3/5-4, (cx-6)/2+10, 12);
GetDlgItem(IDC_LIST_RFT_MAN)->MoveWindow(2, (cy-8)*3/5+10, (cx-6)/2+2, (cy-8)*2/5-2);
GetDlgItem(IDC_LIST_SYS_LOG)->MoveWindow((cx-6)/2+6, (cy-8)*3/5+10, (cx-16)/2+10, (cy-8)*2/5-2);
}
}

[解决办法]
引用:
处理WM_SIZE消息
C/C++ code?123456789101112void C***View::OnSize(UINT nType, int cx, int cy) {    CFormView::OnSize(nType, cx, cy);         if (GetDlgItem(IDC_ST_RFT_MAN)->GetSafeHwnd())    {……


OnSize一次就保存,X,Y进全局变量
再一次OnSize触发作对比形成系数

热点排行