精确控制MFC控件窗口的位置和大小(top|left|width|height)

作为曾经的C#开发者,习惯于为控件指定top,left,width,height
在MFC中没找到,难道靠目测,靠网格,呵呵。
原来MFC所有控件都是窗口,都有CRect
在对话框的OnInit()里添加如下代码:
CRect rect;
m_listCtrl.GetWindowRect(rect);      //  ListCtrl矩形
// m_listCtrl.GetClientRect(rect); //  对话框客户区矩形
ScreenToClient(rect);              //  屏幕坐标转换为客户区坐标
//  取得原来的矩形,在此基础上修改。这里我直接设置个坐标
rect.top =  10;
rect.left =  10;
rect.right = rect.left +  100;
rect.bottom = rect.top +  100;
m_listCtrl.MoveWindow(rect);
// m_listCtrl.SetWindowPos(this,10,10,150,110,SWP_NOZORDER);
C#很方便却封装得太严实,控制不了底层。
C++很麻烦,但是太强大了,直接使用Windows API
不知道我理解得到位不到位。
url: http://greatverve.cnblogs.com/archive/2012/11/17/mfc-top-left-width-height.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC是一个使用C++编写的微软基础类库,用于开发Windows应用程序。在MFC中,设置窗口控件大小自适应也是非常简单的。 首先,我们可以使用Visual Studio自带的可视化设计工具,在设计窗口控件时,将控件的Anchor属性设置为合适的值。Anchor属性可以在属性窗口中找到,它用于指定控件窗口的哪些边框保持相对位置不变,哪些可以拉伸变化。 如果不使用可视化设计工具,可以在窗口初始化时通过代码设置控件位置大小,同时利用MFC提供的SizeToContent函数,设置窗口的尺寸自适应控件大小。以下是一段示例代码: ``` BOOL CMyDlg::OnInitDialog() { … m_btnOK.SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); SizeToContent(); … } void CMyDlg::SizeToContent() { CRect rectClient, rectWindow; GetClientRect(&rectClient); GetWindowRect(&rectWindow); int nWidthDiff = rectWindow.Width() - rectClient.Width(); int nHeightDiff = rectWindow.Height() - rectClient.Height(); CRect rectNewWindow; rectNewWindow.left = rectWindow.left; rectNewWindow.top = rectWindow.top; rectNewWindow.right = rectNewWindow.left + m_btnOK.GetWindowRect().Width() + nWidthDiff; rectNewWindow.bottom = rectNewWindow.top + m_btnOK.GetWindowRect().Height() + nHeightDiff; SetWindowPos(NULL, 0, 0, rectNewWindow.Width(), rectNewWindow.Height(), SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE); } ``` 以上就是利用MFC设置窗口控件大小自适应的方法,具体实现可以根据实际情况进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值