void CDialogResizeHelper::OnSize(UINT, CSize newSize) { if (m_thisWnd != NULL) { HDWP hWinPosInfo = BeginDeferWindowPos( m_table.get_size() + (m_sizeGrip != NULL ? 1 : 0) ); for(t_size n = 0; n < m_table.get_size(); ++n) { CRect rc; if (_EvalRect(n, newSize, rc)) { hWinPosInfo = DeferWindowPos(hWinPosInfo, m_thisWnd.GetDlgItem(m_table[n].id), 0, rc.left,rc.top,rc.Width(),rc.Height(),SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS); } } if (m_sizeGrip != NULL) { RECT rc, rc_grip; if (m_thisWnd.GetClientRect(&rc) && m_sizeGrip.GetWindowRect(&rc_grip)) { DWORD flags = SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOCOPYBITS; if (IsZoomed(m_thisWnd)) flags |= SWP_HIDEWINDOW; else flags |= SWP_SHOWWINDOW; hWinPosInfo = DeferWindowPos(hWinPosInfo, m_sizeGrip, NULL, rc.right - (rc_grip.right - rc_grip.left), rc.bottom - (rc_grip.bottom - rc_grip.top), 0, 0, flags ); } } EndDeferWindowPos(hWinPosInfo); //RedrawWindow(m_thisWnd, NULL, NULL, RDW_UPDATENOW | RDW_ALLCHILDREN); } SetMsgHandled(FALSE); }
bool CDialogResizeHelper::EvalRect(UINT id, CRect & out) const { for(t_size walk = 0; walk < m_table.get_size(); ++walk) { if (m_table[walk].id == id) { CRect client; WIN32_OP_D( m_thisWnd.GetClientRect(client) ); return _EvalRect(walk, client.Size(), out); } } return false; }
void CDialogResizeHelper::OnSize(UINT, CSize newSize) { if (m_thisWnd != NULL) { HDWP hWinPosInfo = BeginDeferWindowPos( m_table.get_size() + (m_sizeGrip != NULL ? 1 : 0) ); for(t_size n = 0; n < m_table.get_size(); ++n) { CRect rc; if (_EvalRect(n, newSize, rc)) { DeferWindowPos(hWinPosInfo, m_thisWnd.GetDlgItem(m_table[n].id), 0, rc.left,rc.top,rc.Width(),rc.Height(),SWP_NOZORDER); } } if (m_sizeGrip != NULL) { RECT rc, rc_grip; if (m_thisWnd.GetClientRect(&rc) && m_sizeGrip.GetWindowRect(&rc_grip)) { DeferWindowPos(hWinPosInfo, m_sizeGrip, NULL, rc.right - (rc_grip.right - rc_grip.left), rc.bottom - (rc_grip.bottom - rc_grip.top), 0, 0, SWP_NOZORDER | SWP_NOSIZE); } } EndDeferWindowPos(hWinPosInfo); } SetMsgHandled(FALSE); }