一、
技術要點分析
所有的windows
控制項(包括工具欄、編輯框等)都派生自
cwnd
類,這就意味著,我們可以用視窗類的
create
()函式把它們「建立
」並顯示到另乙個視窗(例如對話方塊)上。把工具欄加入到對話方塊中正是使用了這樣的一種方法。
通常,我們使用
c*******ctrl
類(派生自
cwnd
類)來建立並管理工具欄控制項。使用這個類建立一條工具欄的一般步驟如下:
1.派生乙個
c*******ctrl
的物件;
2.呼叫
c*******ctrl::create
函式建立工具欄物件;
3.呼叫
c*******ctrl::addbitmap()
和c*******ctrl::addstring()
為工具欄物件加入點陣圖和提示資訊;
4.派生乙個
tbutton
陣列物件進行工具欄中各按鈕的具體設定;
5.修改主視窗的
onnotify
()函式,以顯示工具欄上的提示資訊。
以上步驟在下面的範例**中會有具體體現。
二、
範例程式的建立與主要**分析
利用visual c++
的嚮導生成乙個基於對話方塊的程式,命名為
*******indial
。修改主對話方塊樣式如圖
1。繪出一條工具欄的點陣圖並建立一選單,設定幾個子選單項,然後建立一組工具欄的提示資訊串(
string table
),一旦滑鼠在工具欄某項上停留,就會顯示提示資訊。下面給出程式中的主要**。
在主對話方塊
c*******indialdlg
的類定義中有如下的變數說明:
c*******ctrl *******;
int buttoncount;
int buttonbitmap;
bool doflag;
tbbutton m_button[5];
//設定工具欄上具體資訊的變數陣列
//主對話方塊的初始化函式
bool c*******indialdlg::oninitdialog()
//當滑鼠在工具欄上停留時,呼叫這個函式來顯示提示資訊
bool c*******indialdlg::onnotify(wparam wparam, lparam lparam, resultpresult)
strcpy(tt->sztext,(lpcstr)tip);
//顯示提示資訊
break;
}return cdialog::onnotify(wparam, lparam, presult);}//
該演示程式的工具欄能由使用者定製,隨時增加或刪除工具欄中的某一項
break;}}
void c*******indialdlg::onplay() //
響應函式舉例
以上程式在中/英文
windows 98
、vc++ 6.0
環境下編譯通過,執行正常。圖
2為執行中的有工具欄的對話方塊程式。
圖2
在對話方塊中加入工具欄
工具欄 是一種非常方便的控制項,能大大增加使用者操作的效率,但是基於對話方塊的程式,卻不能像使用編輯框 edit box 和列表框 list box 一樣,方便地增加工具欄控制項。本文將介紹一種在對話方塊中加入工具欄的方法。一 技術要點分析 所有的windows控制項 包括工具欄 編輯框等 都派生自...
在對話方塊中增加選單欄,工具欄,狀態列
1.加選單 在對話方塊的property對話方塊中style中選中system menu 再在property對話方塊中generic中加入選單 2.加工具欄 1。要增加乙個資源idr 1 2.記得加乙個成員變數 protected c m wnd 3.bool cmain oninitdialog...
vc對話方塊中新增工具欄
轉http www.programfan.com blog article.asp?id 27914 1 新增工具欄資源id為idr 2 在對話方塊的類定義中加 c m 3 在oninitdialog中或其它合適的訊息響應中加如下 函式可檢視msdn m create this 建立工具欄 m lo...