Presentation is loading. Please wait.

Presentation is loading. Please wait.

功能表的建立 製作.

Similar presentations


Presentation on theme: "功能表的建立 製作."— Presentation transcript:

1 功能表的建立 製作

2 簡介功能表 功能表的組成 功能表是視窗介面中,提供使用者選取執行指令的主要控制項。 下圖為Word之視窗介面所提供的功能表列與功能表。

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

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

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

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

7 menu程式範例 下圖為程式範例的執行結果,並同時顯示各功能表的選項。

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

9 menu程式範例 下圖為Color Menu功能表的選項內容。 建立視窗程式的功能表有兩種方式:
一種是利用資源編輯器建立功能表,再將該資源載入應用程式。 另一種是利用CMenu類別操作功能表。

10 menu程式範例 下圖是執行本程式範例的另一重點 - 系統功能表與快顯功能表。

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

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

13 menu程式範例 三、其他ID:在修改或插入選項的過程使用到的ID說明介紹如下表。

14 功能表的建立與設定 建立功能表第一步必須利用資源編輯器完成功能表列資源的建立,接著,連結資源物件與視窗程式。
建立功能表的方法:只要於視窗框架類別的建構子中,呼叫CFrameWnd::Create()成員函數,然後將功能表的識別子傳給Create()函數即可 。

15 利用CMenu類別控制功能表 控制所使用的功能表時,必須建立一個CMenu物件,並以CMenu::LoadMenu()函數連結CMenu物件與功能表資源。 完成連結後,便可在程式內透過CMenu類別的成員函數操作功能表。

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

17 利用CMenu類別控制功能表 參數說明 LPCTSTR lpszResourceName 功能表名稱。 UINT nIDResource
功能表的識別子。

18 功能表的建立 -利用CMenu類別控制功能表
BOOL CMenu::Attach( HMENU hMenu ) 函數說明 如果連結成功則傳回非零值,失敗則傳回零值。 參數說明 HMENU hMenu 傳入功能表的標頭(handle)。

19 利用CMenu類別控制功能表 另一種連結功能表的方式則是利用CMenu::Attach()函數,該函數可將已經存在的功能表連結至CMenu物件。 需要操作視窗物件目前所使用的功能表物件時,可以利用以下方式。

20 利用CMenu類別控制功能表 執行MyFrame::OnSwitchMenu()函數後,程式將刪除InsMenu物件,若兩者資源與CMenu物件尚未分離程式將發生錯誤。 離開MyFrame::OnSwitchMenu()函數前須呼叫CMenu::Detach()函數分離InsMenu物件與其連結的功能表資源。

21 利用CMenu類別控制功能表 功能表與選項的取得 載入功能表列資源後,新增選項至特定功能表時,必須取得該功能表的指標,才能操作。
MyFrame::OnSwitchMenu()函數中,欲將Insert Item選項插入Dynamic Menu功能表裡,因此,執行這個動作前,必須先取得Dynamic Menu功能表的指標。

22 利用CMenu類別控制功能表 CMenu* CMenu::GetSubMenu( int nPos ) 函數說明
該函數將傳回功能表列中功能表的指標,如果該功能表不存在則傳回NULL。 參數說明 int nPos 代表功能表位置的整數。功能表中第一個功能表的編號為0,餘類推。

23 利用CMenu類別控制功能表 如果成功取得該選項則傳回該選項的識別子。
UINT CMenu::GetMenuItemID( int nPos) 函數說明 如果成功取得該選項則傳回該選項的識別子。 參數說明 int nPos 代表選項位置的整數。功能表中第一個選項的編號為0。

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 ) (請參考下一張投影片)

25 利用CMenu類別控制功能表 該函數有兩種形式,第一種可以將功能表項目加入功能表中。 函數說明 參數說明 UINT nPosition
指定一功能表項目,CMenu::InsertMenu()函數將會把功能表項目插入該項目前。 (請參考下一張投影片)

26 利用CMenu類別控制功能表 UINT nFlags
用於指定CMenu::InsertMenu()函數的第一個參數nPosition,其指定功能表項目的方式。 下表為控制指定插入位置方式之旗標的說明:

27 利用CMenu類別控制功能表 同時使用各組旗標,需以『|』運算子連結,但同一組旗標不可混用,下表介紹各旗標。

28 利用CMenu類別控制功能表

29 利用CMenu類別控制功能表 UINT nIDNewItem = 0 新功能表項目的ID。如未輸入,預設值為0,表無ID。
lpszNewItem = NULL 新功能表項目顯於功能表的選項名稱。如未輸入,預設值為NULL,表無選項名稱。 const CBitmap* pBmp 欲插入的圖形檔物件。

30 利用CMenu類別控制功能表 (請參考下一張投影片)
BOOL CMenu::AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL ) BOOL CMenu::AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp ) (請參考下一張投影片)

31 利用CMenu類別控制功能表 函數說明 將項目新增至功能表最後,成功傳回非零值,反之傳回零值。 參數說明 UINT nFlags
指定增加的項目,及該項目的狀態。詳細的說明請參考前面CMenu::InsertMenu()函數說明中,關於nFlags參數所使用旗標之表二的內容。 (請參考下一張投影片)

32 利用CMenu類別控制功能表 UINT nIDNewItem = 0 新功能表項目的ID。
LPCTSTR lpszNewItem = NULL 新功能表項目顯示於功能表的選項名稱。 const CBitmap* pBmp 欲插入的圖形檔物件。

33 利用CMenu類別控制功能表 滑鼠軌跡顏色的控制

34 利用CMenu類別控制功能表

35 利用CMenu類別控制功能表 選項的修改與刪除
選取Dynamic Menu的Create Item選項後,在Dynamic Menu功能表新增New Item選項,將原先的Create Item選項名稱改為Delete Item選項。

36 利用CMenu類別控制功能表

37 利用CMenu類別控制功能表

38 利用CMenu類別控制功能表

39 修改系統功能表與建立快顯功能表 menu程式範例將示範如何在系統功能表新增一個選項,以及建立快顯功能表,如下圖所示。

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

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


Download ppt "功能表的建立 製作."

Similar presentations


Ads by Google