フォームのズーム方法
1948 ワード
まず、ウィンドウがドラッグしてサイズを変更できるかどうかはborderのプロパティによって決まります.
borderがResizingでウィンドウがドラッグしてサイズを変更できる場合のみ、他のプロパティではできません.
例:
通常、メインフォームにはTabCtrlコントロールがあり、TabCtrlでロードされたサブウィンドウがあり、サブウィンドウにはListCtrlコントロールとButtonがあります.
メインフォームをズームする場合、TabCtrlと現在のサブウィンドウを同期して拡大し、サブウィンドウがズームされると、上のListCtrl個のButtonコントロールもサイズと位置を調整します.
方法は次のとおりです.
ステップ1:メインウィンドウのWM_をリロードするSIZE法はTabCtrlとそのサブウィンドウのスケーリング結果を処理するために用いられる.注意WM_を使用しないでくださいSIZING、そうでないとスケール処理が点滅します.
ステップ2:メインウィンドウWM_をリロードするSIZINGメソッドは、フォームの最小サイズをロックするために使用されます.これは、スケール中に常に制御する必要があります.最小サイズを制御したくない場合は、この手順を無視します.
ステップ3:サブウィンドウのWM_をリロードするSIZEメソッドは、サブウィンドウ上のListCtrlとButtonの位置調整を処理する
borderがResizingでウィンドウがドラッグしてサイズを変更できる場合のみ、他のプロパティではできません.
例:
通常、メインフォームにはTabCtrlコントロールがあり、TabCtrlでロードされたサブウィンドウがあり、サブウィンドウにはListCtrlコントロールとButtonがあります.
メインフォームをズームする場合、TabCtrlと現在のサブウィンドウを同期して拡大し、サブウィンドウがズームされると、上のListCtrl個のButtonコントロールもサイズと位置を調整します.
方法は次のとおりです.
ステップ1:メインウィンドウのWM_をリロードするSIZE法はTabCtrlとそのサブウィンドウのスケーリング結果を処理するために用いられる.注意WM_を使用しないでくださいSIZING、そうでないとスケール処理が点滅します.
//
void CAppConfigDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO:
CRect rect;
GetClientRect(&rect);
//TabCtrl
if (m_TabCtrl.GetSafeHwnd())
{
m_TabCtrl.MoveWindow(0, 0, rect.Width(), rect.Height());
}
//
if (m_clsUploadAPK.GetSafeHwnd())
{
rect.left += 4;
rect.top += 30;
rect.right -= 3;
rect.bottom -= 3;
m_clsUploadAPK.MoveWindow(&rect);
}
}
ステップ2:メインウィンドウWM_をリロードするSIZINGメソッドは、フォームの最小サイズをロックするために使用されます.これは、スケール中に常に制御する必要があります.最小サイズを制御したくない場合は、この手順を無視します.
//
void CAppConfigDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
CDialogEx::OnSizing(fwSide, pRect);
// TODO:
if (pRect->right - pRect->left < m_nMinWidth)
{
pRect->right = pRect->left + m_nMinWidth;
}
if (pRect->bottom - pRect->top < m_nMinHeight)
{
pRect->bottom = pRect->top + m_nMinHeight;
}
}
ステップ3:サブウィンドウのWM_をリロードするSIZEメソッドは、サブウィンドウ上のListCtrlとButtonの位置調整を処理する
//
void CUploadAPK::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
// TODO:
// ListCtrl
if (m_ctrApkList.GetSafeHwnd())
{
m_ctrApkList.MoveWindow(5, 47, cx - 12, cy - 85);
}
//
CRect rect;
((CButton*)GetDlgItem(IDC_Upload))->GetClientRect(&rect);
((CButton*)GetDlgItem(IDC_Upload))->MoveWindow(cx - rect.Width() - 10, cy - rect.Height() - 10, rect.Width(), rect.Height());
}