我正在编写一个有两个窗格(via CSplitter
)的程序,但是我在解决每个帧中的控件大小时遇到了问题.为简单起见,有人可以告诉我如何使用单一CEdit
控件对基本框架进行操作吗?
我很确定它与这个CEdit::OnSize()
功能有关......但我真的没有到达任何地方......
谢谢!:)
一个窗口在调整大小后立即接收WM_SIZE消息(由MFC中的OnSize处理程序处理),因此CEdit :: OnSize不是您要查找的内容.
你应该在你的帧类和这个处理程序中添加OnSize处理程序,因为Rob 指出你将获得框架客户区的宽度和高度,然后你应该添加调整控件大小和位置的代码.
像这样的东西
void MyFrame::OnSize(UINT nType, int w, int h) { // w and h parameters are new width and height of your frame // suppose you have member variable CEdit myEdit which you need to resize/move myEdit.MoveWindow(w/5, h/5, w/2, h/2); }
当你的帧收到一个OnSize消息时,它会给你新的宽度和高度 - 你可以简单地调用CEdit SetWindowPos方法传递这些值.
假设CMyPane是您的拆分器窗格,它包含您在OnCreate中创建的名为m_wndEdit的CEdit:
void CMyPane::OnSize(UINT nType, int cx, int cy) { m_wndEdit.SetWindowPos(NULL, 0, 0, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER); }
GetDlgItem(IDC_your_slidebar) - > SetWindowPos(...)//实际上你可以移动,调整大小......等等