收藏 分享(赏)

VC-MFC对话框控件随窗口自动调整大小.docx

上传人:fmgc7290 文档编号:6227538 上传时间:2019-04-03 格式:DOCX 页数:5 大小:34.85KB
下载 相关 举报
VC-MFC对话框控件随窗口自动调整大小.docx_第1页
第1页 / 共5页
VC-MFC对话框控件随窗口自动调整大小.docx_第2页
第2页 / 共5页
VC-MFC对话框控件随窗口自动调整大小.docx_第3页
第3页 / 共5页
VC-MFC对话框控件随窗口自动调整大小.docx_第4页
第4页 / 共5页
VC-MFC对话框控件随窗口自动调整大小.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、作者:一般情况下,我们新建的对话框,里面的“确定”和:取消”按钮,在对话框最大化得时候,不会一起变大的,而是保持原来的大小。而 MFC 默认不支持控件大小按比例缩放功能最简单的情况:当我们点击最大化按钮的时候,对话框会最大化,但是控件“确定”和“取消”不会跟着变大。如果我们在对话框上面有多少控件,那么会很丑,而且很不实用,最大化本来就是想看的更清楚嘛。我们可以采取下面的措施:对话框也是窗口,最大化是对窗口大小的改变,而在 windows message handle 中有个 WM_SIZE 的消息,该消息在窗口大小发生变化的时候会产生。那么我们可以根据这个消息,在窗口大小发生变化的时候,利用

2、MoveWindow()函数来重新设置各个控件的大小。在网上查了一些资料,都不方便使用,还需要自己写好多代码。在这里我封装了一个简单的类,可以实现这个功能:用法是,1、在对话框类头文件中添加此类的对象CItemResize m_itemSize;2、在窗口初始化函数OnInitDialog中填写需要改变大小的对应控件的ID号:m_itemSize.AddItemRect(IDOK, this);m_itemSize.AddItemRect(IDC_LIST1, this);此处的ID替换成对话框上实际的ID。3、在OnSize函数中调用:m_itemSize.ResizeItem();功能实现

3、完毕类代码代码如下:头文件:ItemResize.h#ifndef ITEMRESIZE_H#define ITMERESIZE_H/*/* 作者: */*/#include #include using namespace std;typedef struct _RESIZEINFOUINT nID;CWnd* pParent;float fLeft;float fRight;float fTop;float fBottom;RESIZEINFO;class CItemResizeCRect m_rectDlg;/在窗口创建时,添加需要自动按比例调整大小的控件ID。vector m_vRes

4、izeID;public:CItemResize(void);CItemResize(void);void AddItemRect(UINT nID, CWnd* pParent);void ResizeItem();#endifCPP文件:ItemResize.cpp/-/*/* 作者: */*/#include “StdAfx.h“#include “ItemResize.h“CItemResize:CItemResize(void)CItemResize:CItemResize(void)void CItemResize:AddItemRect( UINT nID, CWnd* pPar

5、ent )RESIZEINFO rf = 0;rf.nID = nID;rf.pParent = pParent;CRect rect;pParent-GetClientRect(CWnd *pItem = pParent-GetDlgItem(nID);ASSERT(pItem); /判断控件指针是否有效pItem-GetWindowRect(pParent-ScreenToClient(rf.fLeft = (float)(rect.left) / (float)(m_rectDlg.Width();rf.fRight = (float)(rect.right) / (float)(m_r

6、ectDlg.Width();rf.fTop = (float)(rect.top) / (float)(m_rectDlg.Height();rf.fBottom = (float)(rect.bottom) / (float)(m_rectDlg.Height();m_vResizeID.push_back(rf);void CItemResize:ResizeItem()for (UINT i=0; iGetClientRect(CWnd *pItem = m_vResizeIDi.pParent-GetDlgItem(m_vResizeIDi.nID);if (pItem)CRect rect;rect.left = (int)(m_rectDlg.Width() * m_vResizeIDi.fLeft);rect.right = (int)(m_rectDlg.Width() * m_vResizeIDi.fRight);rect.top = (int)(m_rectDlg.Height() * m_vResizeIDi.fTop);rect.bottom = (int)(m_rectDlg.Height() * m_vResizeIDi.fBottom);pItem-MoveWindow(rect);/设置控件大小/-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 开发文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报