Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
功能表的建立 PowerPoint Presentation
Download Presentation
功能表的建立

功能表的建立

128 Vues Download Presentation
Télécharger la présentation

功能表的建立

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
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. 修改系統功能表與建立快顯功能表 CMenu* CWnd::GetSystemMenu( BOOL bRevert ) const • 函數說明 若傳入參數為FALSE時,將傳回目前執行之視窗程式的系統功能表指標。 • 參數說明 • BOOL bRevert 當傳入參數為FALSE時,將傳回目前執行之視窗程式的系統功能表指標。

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