功能表的建立

41
功功功功功功 功功

description

功能表的建立. 製作. 簡介功能表. 功能表的組成 功能表是視窗介面中,提供使用者選取執行指令的主要控制項。 下圖為 Word 之視窗介面所提供的功能表列與功能表。. 簡介功能表. 功能表的種類 功能表的種類,大致有這幾種: 一、下拉功能表。 二、快顯功能表。 三、系統功能表。. 簡介功能表. 一、下拉功能表 以下為 Word 的編輯功能表。. 簡介功能表. 二、快顯功能表 以下為在 Word 編輯畫面上按下滑鼠右鍵後,所產生的快顯功能表。. 簡介功能表. 三、系統功能表 下圖為 Word 的系統功能表。. menu 程式範例. - PowerPoint PPT Presentation

Transcript of 功能表的建立

Page 1: 功能表的建立

功能表的建立

製作

Page 2: 功能表的建立

簡介功能表 功能表的組成• 功能表是視窗介面中,提供使用者選取執行指

令的主要控制項。• 下圖為 Word 之視窗介面所提供的功能表列與功

能表。

Page 3: 功能表的建立

簡介功能表 功能表的種類 功能表的種類,大致有這幾種: 一、下拉功能表。 二、快顯功能表。 三、系統功能表。

Page 4: 功能表的建立

簡介功能表 一、下拉功能表 以下為 Word 的編輯功能表。

Page 5: 功能表的建立

簡介功能表 二、快顯功能表 以下為在 Word 編輯畫面上按下滑鼠右鍵後,

所產生的快顯功能表。

Page 6: 功能表的建立

簡介功能表 三、系統功能表 下圖為 Word 的系統功能表。

Page 7: 功能表的建立

menu 程式範例 下圖為程式範例的執行結果,並同時顯示各

功能表的選項。

Page 8: 功能表的建立

menu 程式範例 下圖為 File 功能表的選項內容。

下圖為 Dynamic Menu 功能表的選項內容。

Page 9: 功能表的建立

menu 程式範例 下圖為 Color Menu 功能表的選項內容。

建立視窗程式的功能表有兩種方式: 一種是利用資源編輯器建立功能表,再將該

資源載入應用程式。 另一種是利用 CMenu 類別操作功能表。

Page 10: 功能表的建立

menu 程式範例 下圖是執行本程式範例的另一重點 - 系統功

能表與快顯功能表。

Page 11: 功能表的建立

menu 程式範例 使用資源 一、功能表部份:以下是程式範例中使用的

功能表資源。

Page 12: 功能表的建立

menu 程式範例 二、選項部份:下表為功能表內選項與 ID

的對照。

Page 13: 功能表的建立

menu 程式範例 三、其他 ID :在修改或插入選項的過程使

用到的 ID 說明介紹如下表。

Page 14: 功能表的建立

功能表的建立與設定• 建立功能表第一步必須利用資源編輯器完成

功能表列資源的建立,接著,連結資源物件與視窗程式。

• 建立功能表的方法:只要於視窗框架類別的建構子中,呼叫 CFrameWnd::Create() 成員函數,然後將功能表的識別子傳給 Create()函數即可 。

Page 15: 功能表的建立

利用 CMenu 類別控制功能表

• 控制所使用的功能表時,必須建立一個CMenu 物件,並以 CMenu::LoadMenu() 函數連結 CMenu 物件與功能表資源。

• 完成連結後,便可在程式內透過 CMenu 類別的成員函數操作功能表。

Page 16: 功能表的建立

利用 CMenu 類別控制功能表

BOOL CMenu::LoadMenu( LPCTSTR lpszResourceName )

BOOL CMenu::LoadMenu( UINT nIDResource) 函數說明 該函數有兩種形式: 傳入功能表資源名稱 傳入功能表識別子 ( 請參考下一張投影

片 )

Page 17: 功能表的建立

利用 CMenu 類別控制功能表

參數說明 LPCTSTR lpszResourceName

功能表名稱。 UINT nIDResource

功能表的識別子。

Page 18: 功能表的建立

功能表的建立- 利用 CMenu 類別控制功能表

BOOL CMenu::Attach( HMENU hMenu ) 函數說明 如果連結成功則傳回非零值,失敗則傳回零

值。 參數說明 HMENU hMenu

傳入功能表的標頭( handle )。

Page 19: 功能表的建立

利用 CMenu 類別控制功能表

另一種連結功能表的方式則是利用CMenu::Attach() 函數,該函數可將已經存在的功能表連結至 CMenu 物件。

需要操作視窗物件目前所使用的功能表物件時,可以利用以下方式。

Page 20: 功能表的建立

利用 CMenu 類別控制功能表

執行 MyFrame::OnSwitchMenu() 函數後,程式將刪除 InsMenu 物件,若兩者資源與 CMenu物件尚未分離程式將發生錯誤。

離開 MyFrame::OnSwitchMenu() 函數前須呼叫CMenu::Detach() 函數分離 InsMenu 物件與其連結的功能表資源。

Page 21: 功能表的建立

利用 CMenu 類別控制功能表

功能表與選項的取得 載入功能表列資源後,新增選項至特定功能表

時,必須取得該功能表的指標,才能操作。 MyFrame::OnSwitchMenu() 函數中,欲將

Insert Item 選項插入 Dynamic Menu 功能表裡,因此,執行這個動作前,必須先取得 Dynamic Menu 功能表的指標。

Page 22: 功能表的建立

利用 CMenu 類別控制功能表

CMenu* CMenu::GetSubMenu( int nPos ) 函數說明 該函數將傳回功能表列中功能表的指標,如

果該功能表不存在則傳回 NULL 。 參數說明 int nPos

代表功能表位置的整數。功能表中第一個功能表的編號為 0 ,餘類推。

Page 23: 功能表的建立

利用 CMenu 類別控制功能表

UINT CMenu::GetMenuItemID( int nPos) 函數說明 如果成功取得該選項則傳回該選項的識別子。

參數說明 int nPos

代表選項位置的整數。功能表中第一個選項的編號為 0 。

Page 24: 功能表的建立

利用 CMenu 類別控制功能表

選項與下一層功能表的新增BOOL CMenu::InsertMenu( UINT nPosition, UINT

nFlags,UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL )

BOOL CMenu::InsertMenu( UINT nPosition, UINT nFlags,UINT nIDNewItem, const CBitmap* pBmp )

( 請參考下一張投影片 )

Page 25: 功能表的建立

利用 CMenu 類別控制功能表

函數說明 該函數有兩種形式,第一種可以將功能表項

目加入功能表中。 參數說明 UINT nPosition

指定一功能表項目, CMenu::InsertMenu()函數將會把功能表項目插入該項目前。

( 請參考下一張投影片 )

Page 26: 功能表的建立

利用 CMenu 類別控制功能表

UINT nFlags

用於指定 CMenu::InsertMenu() 函數的第一個參數 nPosition ,其指定功能表項目的方式。

下表為控制指定插入位置方式之旗標的說明:

Page 27: 功能表的建立

利用 CMenu 類別控制功能表

同時使用各組旗標,需以『 | 』運算子連結,但同一組旗標不可混用,下表介紹各旗標。

Page 28: 功能表的建立

利用 CMenu 類別控制功能表

Page 29: 功能表的建立

利用 CMenu 類別控制功能表

UINT nIDNewItem = 0

新功能表項目的 ID 。如未輸入,預設值為 0 ,表無 ID 。

lpszNewItem = NULL

新功能表項目顯於功能表的選項名稱。如未輸入,預設值為 NULL ,表無選項名稱。

const CBitmap* pBmp

欲插入的圖形檔物件。

Page 30: 功能表的建立

利用 CMenu 類別控制功能表

BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL )

BOOL CMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, const

CBitmap* pBmp )

( 請參考下一張投影片 )

Page 31: 功能表的建立

利用 CMenu 類別控制功能表

函數說明 將項目新增至功能表最後,成功傳回非零值,反

之傳回零值。 參數說明 UINT nFlags

指定增加的項目,及該項目的狀態。詳細的說明請參考前面 CMenu::InsertMenu() 函數說明中,關於 nFlags 參數所使用旗標之表二的內容。

( 請參考下一張投影片 )

Page 32: 功能表的建立

利用 CMenu 類別控制功能表

UINT nIDNewItem = 0

新功能表項目的 ID 。 LPCTSTR lpszNewItem = NULL

新功能表項目顯示於功能表的選項名稱。 const CBitmap* pBmp

欲插入的圖形檔物件。

Page 33: 功能表的建立

利用 CMenu 類別控制功能表

滑鼠軌跡顏色的控制

Page 34: 功能表的建立

利用 CMenu 類別控制功能表

Page 35: 功能表的建立

利用 CMenu 類別控制功能表

選項的修改與刪除 選取 Dynamic Menu 的 Create Item 選項後,

在 Dynamic Menu 功能表新增 New Item 選項,將原先的 Create Item 選項名稱改為Delete Item 選項。

Page 36: 功能表的建立

利用 CMenu 類別控制功能表

Page 37: 功能表的建立

利用 CMenu 類別控制功能表

Page 38: 功能表的建立

利用 CMenu 類別控制功能表

Page 39: 功能表的建立

修改系統功能表與建立快顯功能表 menu 程式範例將示範如何在系統功能表新增

一個選項,以及建立快顯功能表,如下圖所示。

Page 40: 功能表的建立

修改系統功能表與建立快顯功能表CMenu* CWnd::GetSystemMenu( BOOL bRevert ) const 函數說明 若傳入參數為 FALSE 時,將傳回目前執行之視

窗程式的系統功能表指標。 參數說明 BOOL bRevert

當傳入參數為 FALSE 時,將傳回目前執行之視窗程式的系統功能表指標。

Page 41: 功能表的建立

修改系統功能表與建立快顯功能表