2017-07-03 23 views
2

我在MFC對話框MyDlg(C++,VS2015,64位Windows 7)中創建了一個MFC網格控件(Code Project MFC Grid control 2.27)。該MyDlg.h文件包含調整MFC網格控件以適應對話框?

CGridCtrl gridCtrl; 

和資源編輯器用於添加MFCGridCtrl類型的自定義控制。在MyDlg.cpp,我繼承與

DDX_Control(pDX, IDC_ComponentRatios, gridCtrl); 

控制在MyDlg::OnInitDialog,我設置行數和列數與

gridCtrl.SetColumnCount(2); 
gridCtrl.SetRowCount(2); 
gridCtrl.EnableWindow(TRUE); 

我得到的是2×2格我期望​​,但尺寸自定義控件的大小與網格的大小不匹配。

自定義控件的寬度是錯誤的,因爲設置列計數看起來是爲滾動條留出空間,這是不必要的。

高度不變,這是錯誤的,因爲自定義控件的大小爲8行,而我在本例中僅使用2(實際需要的行數是可變的)。

如何獲取網格以填充自定義控件的寬度,並調整該控件的高度以匹配?

+0

如果您使用'CGridCtrl'而不是'ExpandColumnsToFit'方法。 –

+0

如果你想調整控件本身的大小,你可以使用SetWindowPos(),但還有其他的東西需要考慮。它的最大尺寸應該是多少?包含對話框是否可以調整大小?如果你想控制它的寬度,那麼最小,最大,單個列寬應該是多少? –

+0

我使用MoveWindow來設置控件的整體大小。單元格的數量及其尺寸是固定的,並且在創建對話框時已知。對話框不能調整大小,但即使是這樣,控件也不會改變。 – Woody20

回答

1

據我瞭解你的問題你期望網格調整自己以適應其內容?如果是這樣,這不是電網控制的一項功能。

網格控件僅在需要時顯示滾動條。不需要的空間顯示爲深灰色。您可以使用函數CGridCtrl :: ExpandToFit擴展列和行,以刪除所有滾動條(如果它們確實不是必需的)。

該功能還注意所有網格單元覆蓋整個控件客戶端空間。

+0

ExpandToFit正是我所需要的。我發現的是,控件總是允許滾動條的空間,儘管如果不需要的話它會變黑。而且,我正在使用MoveWindow調整控件本身的大小。 – Woody20