在对话框收到WM_SIZE时,先获取对话框的大小,然后改变picturebox的大小即可。
CRect rcClient,rcPicture;
GetClientRect(&rcClient);
m_PictureBox.GetClientRect(&rcPicture);
// 移动picturebox到对话框的左上角。
rcPicture.MoveToX(0);
rcPicture.MoveToY(0);
// pircurebox的长宽是对话框长宽的2分之1.
rcPicture.right = rcClient.Width() / 2;
rcPicture.bottom = rcClient.Height() / 2;
// 移动picturebox.
m_PictureBox.MoveWindow(rcPicture);
追问对话框接受WM_SIZE消息,怎么设置?
追答MFC的实现方法:
afx_msg void OnSize(UINT nType,int cx,int cy);
追问添加方法,窗口大小改变时,并没有调用该方法。怎么会没有触发呢?
追答BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_SIZE()
END_MESSAGE_MAP()
你在上面这个消息宏定义里加了ON_WM_SIZE()了吗,没加就不会触发。
本回答被提问者和网友采纳