網頁

2012/03/20

[MFC] 對話盒應用程式使用 Toolbar

今天無聊練習了一下 MFC 的對話盒應用程式,想在對話盒上加個工具列 (CToolBar),腦袋裡浮現的卻一直是 CFrameWnd 使用的方法:EnableDocking();對一個身為 CDialog 資料成員的 CToolBar instance 來說,自然在 CDialog::OnInitDialog() 裡就炸裂了~XD
後來 Google 了一下方法,原來我誤會 MSDN 裡有關 RepositionBars() 用法,一直以為 RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0); 裡的前兩個引數指的是工具列的第一個和最後一個按鈕的 ID……實在是蠢爆了。

以下簡單記錄一下方法:
1. 為對話盒類別加入一個 CToolBar 成員:
CToolBar toolbar;

2. 在對話盒的 OnInitDialog() 成員函式尾巴加上以下幾行:
toolbar.Create(this);    // Create a toolbar
toolbar.LoadToolBar(IDR_TOOLBAR1);    // Load a toolbar resource by a resource ID
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0);    // Attach the toolbar into the top of a dialog
如果有 2 個 CToolBar 實體分別對應至 2 個 toolbar resource,工具列會疊起來。

toolbar.Create(this);
toolbar.LoadToolBar(IDR_TOOLBAR1);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0);

toolbar2.Create(this);
toolbar2.LoadToolBar(IDR_TOOLBAR2);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

為啥會這樣,等我研究出來再說……。

沒有留言: