選單和其他資源 2 之建立自己的選單

2021-06-08 08:24:11 字數 4215 閱讀 8573

選單可能是windows程式提供的一致的使用者介面中最重要的部分,而想程式中新增選單是windows程式設計中相對容易的布馮。當使用者選擇選單單選時,windows向你的程式傳送了乙個含有才選單單選id的wm_command訊息

loword(wparam)

控制項id

hiword(wparam)

通知碼lparam

子視窗控制代碼

建立選單有三種方法;

用wndclass定義

2使用loadmenu獲取hmenu,然後在createwindow倒數第三個引數寫上hmenu

hmenu=loadmenu(hinstance,text("mymenu"));

hwnd=createwindow(//倒數第三個引數hmenu)

3第三種方法和第二種方法一樣:

hmenu=loadmenu(hinstance,makeintresource(menuid));

hwnd=createwindow(//倒數第三個引數hmenu);

具體步驟跟建立自己的icon差不多;1新建windows32專案,編寫好自己的.cpp檔案

2在專案名稱那裡右鍵新增資源(.rc),然後resource.h標頭檔案也會自己建立

3在resource資料夾右鍵,新增資源(menu)

4然後在圖形介面裡面編輯選項和id,重新命名就行了

5執行下面看一段簡單的程式:

#include#include"resource.h"

lresult callback windowproc(

hwnd hwnd, // handle to window

uint umsg, // message identifier

wparam wparam, // first message parameter

lparam lparam // second message parameter

);int winapi winmain(

hinstance hinstance, // handle to current instance

hinstance hprevinstance, // handle to previous instance

lpstr lpcmdline, // command line

int ncmdshow // show state)

hmenu=loadmenu(hinstance,makeintresource(menudemo));

hwnd=createwindow(

text("this is title"), // window name

cw_usedefault, // horizontal position of window

cw_usedefault, // vertical position of window

cw_usedefault, // window width

cw_usedefault, // window height

null, // handle to parent or owner window

hmenu, // menu handle or child identifier

null // window-creation data

); //setmenu(hwnd,hmenu);

showwindow(hwnd,ncmdshow);

updatewindow(hwnd);

while(getmessage(&msg,null,0,0))

return msg.wparam;

}lresult callback windowproc(

hwnd hwnd, // handle to window

uint umsg, // message identifier

wparam wparam, // first message parameter

lparam lparam // second message parameter

) return 0;

case wm_destroy:

postquitmessage(0);

return 0;

} return defwindowproc(hwnd,umsg,wparam,lparam);

}

效果如下

還有一段:

/*-----------------------------------------

menudemo.c -- menu demonstration

(c) charles petzold, 1998

-----------------------------------------*/

#include #include "resource.h"

#define id_timer 1

lresult callback wndproc (hwnd, uint, wparam, lparam) ;

int winapi winmain (hinstance hinstance, hinstance hprevinstance,

pstr szcmdline, int icmdshow)

cw_usedefault, cw_usedefault,

cw_usedefault, cw_usedefault,

null, null, hinstance, null) ;

showwindow (hwnd, icmdshow) ;

updatewindow (hwnd) ;

while (getmessage (&msg, null, 0, 0))

return msg.wparam ;

}lresult callback wndproc (hwnd hwnd, uint message, wparam wparam, lparam lparam)

; static int iselection = idm_bkgnd_white ;

hmenu hmenu ;

switch (message)

return 0 ;

case idm_timer_stop:

killtimer (hwnd, id_timer) ;

enablemenuitem (hmenu, idm_timer_start, mf_enabled) ;

enablemenuitem (hmenu, idm_timer_stop, mf_grayed) ;

return 0 ;

messagebox (hwnd, text ("help not yet implemented!"),

return 0 ;

messagebox (hwnd, text ("menu demonstration program\n")

text ("(c) charles petzold, 1998"),

return 0 ;

}break ;

case wm_timer:

messagebeep (0) ;

return 0 ;

case wm_destroy:

postquitmessage (0) ;

return 0 ;

}return defwindowproc (hwnd, message, wparam, lparam) ;

}

效果:

載入和處理其他資源

我們專案中可以載入,我們需要在專案中使用,比較常見的使用的方式是兩種 這個時候,打包會報錯 要處理jpg png等格式的,我們也需要有對應的loader file loader file loader的作用就是幫助我們處理import require 方式引入的乙個檔案資源,並且會將它放到我們輸出的...

GUI剖析之資源篇之 選單

選單 1 載入選單資源 1.為主視窗載入選單 wndclass wcex wcex.lpszmenuname makeintresource idc my 2.建立自己的視窗時在入選單資源 選單資源 3.建立下拉列表 hinstance hinstance getmodulehandle null ...

windows遊戲程式設計 三 建立選單資源

windows遊戲程式設計大師技巧第二版也是很老的書了,內容有些變化。使用vs2019建立選單資源 資源名稱修改為mainmenu.rc,檢視選單id 方法一 雙擊進入 選單id為idr menu1 雙擊開啟resource.件 這裡的id file open,id file close就是選單欄按...