首頁>技術>

不知道少了什麼,總覺得沒有以前快樂,不後悔遇見誰,只後悔變成現在的模樣。。。

---- 網易雲熱評

一、視窗的頂層選單

1、建立選單HMENU CreateMenu(VOID); //建立成功返回選單控制代碼

2、增加選單項

BOOL AppendMenu(

HMENU hMenu, //選單控制代碼

UINT uFlags, //選單項風格

UINT_PTR uIDNewItem, //選單項ID或下拉選單的控制代碼

LPCTSTR lpNewItem //選單項的名稱

);

3、設定到視窗

BOOL SetMenu(

HWND hWnd, //視窗控制代碼

HMENU hMenu //選單控制代碼 );

4、三種常見風格

MF_SEPARATOR:選單項的分割線,一般給0

5、相關程式碼

case WM_CREATE:

建立頂層選單(hWnd);

break;

void 建立頂層選單(HWND hWnd) {

//1、建立頂層選單

HMENU hMenu= CreateMenu();//返回選單控制代碼

//2、增加選單項

AppendMenu(hMenu, MF_STRING, 1001, L"哎呦");

AppendMenu(hMenu, MF_STRING, 1001, L"不錯");

//3、設定(顯示)選單

SetMenu(hWnd, hMenu);

}

二、彈出式選單

1、下拉式選單

//1.1建立彈出選單

HMENU hFile = CreatePopupMenu();

//在彈出選單中新增選單項

AppendMenu(hFile, MF_STRING, 1003, L"哎");

AppendMenu(hFile, MF_SEPARATOR, 0,L"");//分割線

AppendMenu(hFile, MF_STRING, 1004, L"呦");

AppendMenu(hMenu, MF_POPUP,(UINT)hFile,L"哎呦");

2、選單命令處理

case WM_COMMAND:

選單命令處理(hWnd,wParam);

break;

void 選單命令處理(HWND hWnd,WPARAM wParam)

{

switch (LOWORD(wParam))

{

case 1003:

MessageBox(hWnd, L"哎哎哎哎我哎哎哎哎哎哎",L"呦",MB_OK);

break;

case 1004:

MessageBox(hWnd, L"呦呦呦呦呦呦呦呦呦呦呦",L"哎",MB_OK);

break;

default:

break;

}

}

三、選單項狀態

1、直接在前面加√

AppendMenu(hFile, MF_STRING|MF_CHECKED, 1003, L"哎");

2、選單另起一列

AppendMenu(hFile, MF_STRING|MF_MENUBARBREAK, 1004, L"呦");

3、預設灰色,不能選擇

AppendMenu(hFile1, MF_STRING|MF_GRAYED, 1005, L"不");

4、檢查選單欄

CheckMenuItem:是否被選中

EnableMenuItem:是否可用

case 1006:

if (勾選狀態==0)

{

//按選單id值判斷是否勾選

CheckMenuItem(選單控制代碼, 1006, MF_BYCOMMAND | MF_UNCHECKED);

}

else

{

//按選單索引取值

CheckMenuItem(選單控制代碼, 1, MF_BYPOSITION | MF_CHECKED);

}

勾選狀態 = !勾選狀態;

break;

5、WM_INITMENUPOPUP

在選單被啟用但是未顯示,視窗會收到這個訊息

WPARAM:即將顯示的選單控制代碼

LPARAM

HIWORD:是視窗選單標識 0/1

視窗選單:頂層選單和系統選單屬於視窗選單,彈出式選單不屬於視窗選單

case WM_INITMENUPOPUP:

選單啟用未顯示(hWnd,wParam,lParam);

break;

void 選單啟用未顯示(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

wchar_t s[256] = { 0 };

WriteConsole(輸出控制代碼, s, wcslen(s), NULL, NULL);

}

18
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 「Python科學計算」2.1