VC如何如何处理WM_SIZE使屏幕中的控件随窗口的改变而调整大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC如何如何处理WM_SIZE使屏幕中的控件随窗口的改变而调整大小相关的知识,希望对你有一定的参考价值。

在Onsize里重新计算子控件位置,再调用MoveWindow或SetWindowPos进行位置设置。
以下代码手写的,不是在VS写的,没经过编译,不一定能编译哈(可能大小写错误)

void CMyDlg::Onsize(...)

CDialog::Onsize(0, 0, cx, cy);
if (m_hWnd != NULL && IsWindow(m_hWnd))

CRect rtClient;
GetClientRect(&rtClient);

CRect rtWindow;
rtWindow.right = rtClient.right - 10;
rtWindow.left = rtWindow.right - 65;
rtWindow.bottom = rtClient.bottom - 20;
rtWindow.top = rtWindow.bottom - 25;
m_wndMyEdit.MoveWindow(rtWindow);

参考技术A 需要把所有的控件进行重绘。
或者把控件的大小和坐标与主窗口关联。

mfc 窗口大小变化时,如何让窗口内部控件也一起随比例改变位置?

参考技术A

mfc 窗口大小变化时,如何让窗口内部控件也一起随比例改变位置,解决办法:

    对应窗口的属性Maximize Box和Minimize Box设置为true,从而能够使窗口最大化和最小化,Border属性设置为Resizing从而可以改变窗口的大小。

    在消息有个WM_SIZE,添加函数OnSize,这样可以在函数内调整控件的大小,特别说明很多代码中利用当前控件比值与窗口大小比值再乘上当前窗口大小来改变控件大小,但是由于精度的问题,调整多次就会出问题,那么这里可以利用一个结构体保存每个控件与原窗口的比值。

如以上回答未解决问题,请尝试:

    使用SetWindowPos函数。

    使用MoveWindow函数

以上是关于VC如何如何处理WM_SIZE使屏幕中的控件随窗口的改变而调整大小的主要内容,如果未能解决你的问题,请参考以下文章

iPad:如何处理有关人类准则的多个弹出窗口?

在VC++如何使控件大小修改为规定的大小?

mfc 窗口大小变化时,如何让窗口内部控件也一起随比例改变位置?

VC 对话框最小化 最大化

如何处理显示在屏幕外的 QDialog?

VC MFC界面怎么根据桌面分辨率自动设置显示窗口和控件的大小