У меня есть приложение MFC MDI. Если я изменю размеры своего окна, я получу окно с новым масштабом.
BEGIN_MESSAGE_MAP(CmyView, CFormView)
ON_WM_SIZE()
END_MESSAGE_MAP()
void CmyView::OnSize(UINT nType, int cx, int cy)
{
RECT rc;
GetClientRect(&rc);
if (::IsWindow(m_XYZ.GetSafeHwnd()))
{
m_XYZ.MoveWindow (rc.left, rc.top,rc.right,rc.bottom);
}
}
Все работает нормально, но если я нажму кнопку «Развернуть», размер экрана не изменится. Я получу белую рамку справа и снизу.
Есть ли какие-либо изменения, чтобы получить событие максимизации, например, событие resize (ON_WM_SIZE ())?
Спасибо 🙂
спасибо за ваши ответы! Я нашел проблему.
Как я уже сказал, у меня есть приложение MDI. Я использовал событие ON_SIZE в моем первом и втором просмотре. Событие максимизации или минимизации вызывается только в MainFrame.
Но проблема все еще жива.
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
RECT rc;
GetClientRect(&rc);
CWnd* ViewWin = GetWindow(0); // this is my first view
if (::IsWindow(ViewWin->GetSafeHwnd()))
{
if (nType == SIZE_MAXIMIZED)
ViewWin->ShowWindow(SW_MAXIMIZE);
else if (nType == SIZE_MINIMIZED)
ViewWin->ShowWindow(SW_MINIMIZE);
else
ViewWin->MoveWindow (rc.left, rc.top,rc.right,rc.bottom);
}
CWnd* ViewWin1 = GetWindow(1); // this is my second view
if (::IsWindow(ViewWin1->GetSafeHwnd()))
{
if (nType == SIZE_MAXIMIZED)
ViewWin1->ShowWindow(SW_MAXIMIZE);
else if (nType == SIZE_MINIMIZED)
ViewWin1->ShowWindow(SW_MINIMIZE);
else
ViewWin1->MoveWindow (rc.left, rc.top,rc.right,rc.bottom);
}
}
Я займусь делом максимизации или минимизации, но ничего не произойдет.