以前用的GetMinMaxInfo,在VS2015中會致使:Report模式的CListCtrl隨窗口拉伸時,表頭沒法繪製超過原大小的區域。其餘版本和控件未測試,而OnSizing沒有這問題。ide
前一方法沒有問題,通過詳細測試後已排除了上述緣由,已確認是對ClistCtrl的誤操做致使。測試
對於 OnSizing ,一開始在網上找了半天都是殘缺的使用方法,那些人都沒想一想參數 fwSide (Forward Side)有沒有用,最後我爲了代碼可讀性找了半天,最終經過VS的自動補完找到了宏定義。spa
例程只限制了最小範圍,但徹底能夠實現限制最大範圍。code
其中 MINI_WIDTH 、 MINI_HEIGHT 爲自定義的最小範圍, WMSZ_XXXXXX 表示你拉伸的起點方向(共八個):blog
void CMyDlg::OnSizing(UINT fwSide, LPRECT pRect) { if (pRect->right - pRect->left < MINI_WIDTH) { if (fwSide == WMSZ_LEFT || fwSide == WMSZ_TOPLEFT || fwSide == WMSZ_BOTTOMLEFT) { pRect->left = pRect->right - MINI_WIDTH; } else { pRect->right = pRect->left + MINI_WIDTH; } } if (pRect->bottom - pRect->top < MINI_HEIGHT) { if (fwSide == WMSZ_TOP || fwSide == WMSZ_TOPLEFT || fwSide == WMSZ_TOPRIGHT) { pRect->top = pRect->bottom - MINI_HEIGHT; } else { pRect->bottom = pRect->top + MINI_HEIGHT; } } CDialogEx::OnSizing(fwSide, pRect); }