標籤:win32 編程 windows sdk mfc
一、系統功能表
1 執行從系統提供的視窗命令,例如最大化、關閉等命令。本質上和普通菜單一樣,所以我們也可以在程式中使用這個菜單
2 系統功能表的使用
2.1 擷取系統功能表
GetSystemMenu
HMENU GetSystemMenu(
HWND hWnd, //要擷取的視窗控制代碼
BOOL bRevert; //擷取重設標識
);
bRevert: TRUE 重設 FALSE 不重設
當為TRUE時 會將菜單重設成預設狀態,並返回菜單控制代碼,為false功能表項目不重設, 擷取當前系統功能表的狀態
2.2 修改系統功能表, 例如增加、 刪除
AppendMenu
InsertMenu
比AppendMenu增加了一個插入功能表項目的位置
RemoveMenu
刪除功能表項目
2.3 系統功能表的響應命令
系統功能表的響應命令,實在WM_SYSCOMMAND 中
WPARAm - LOWORD( wParam )為增加菜單的ID
二、右鍵菜單
1 當在視窗點擊右鍵時,彈出的菜單。
2 右鍵菜單的使用
2.1 建立菜單
CreatePopMenu
2.2 菜單增加
AppendMenu / InsertMenu
2.3 菜單的顯示
TrackPopupMenu
BOOL TrackPopupMenu( HMENU hMenu, // handle to shortcut menu UINT uFlags, // options int x, // horizontal position int y, // vertical position int nReserved, // reserved, must be zero HWND hWnd, // handle to owner window CONST RECT *prcRect // ignored);
2.4 菜單的命令處理
WM_COMMAND
2.5 使用右鍵菜單的位置
2.5.1 WM_RBUTTONUP中添加菜單的建立和顯示
右鍵訊息座標轉換成螢幕座標使用 - ClientToScreen
2.5.2 WM_CONTEXTMENU
用於顯示右鍵的菜單的訊息
WPARAM - 右鍵抬起時對應的視窗控制代碼
LPARAM - 右鍵抬起時的螢幕座標
2.5.3 WM_RBUTTONUP 和 WM_CONTEXTMENU對比
1) 座標系不同,WM_RBUTTONUP 客戶區座標 WM_CONTEXTMENU 螢幕座標
2)WM_RBUTTONUP 先於 WM_CONTEXTMENU執行