SDK第二天 選單

2021-04-02 01:35:54 字數 3317 閱讀 9814

sdk

第二天—

選單接著上一天的內容,新增乙個選單,並加入各項,用記事本開啟

resource.rc

,可以找到如下內容

idr_menu1 menu discardable //

這裡定義選單名

begin

menuitem "exit",idm_exit//

新增選單項

exit

popup "edit"//

新增彈出選單

begin

menuitem "copy(&c)/tctrl+c",idm_copy

menuitem "paste",idm_paste

menuitem separator

menuitem "seleceall",idm_selectall

endmenuitem "about",idm_about

end同時在

resource.h

中可以找到

idm_exit

等的定義

#define idm_exit40001

#define idm_copy40002

#define idm_paste40003

#define idm_selectall40004

#define idm_about40005

#define idm_alignleft40006

#define idm_alignright40007

這樣就把選單資源和我們的主程式關聯起來了。

接著就要把選單在視窗中顯示出來,我們可以在初始化視窗時指定選單

wndclass.lpszmenuname=(lpcstr)idr_menu1;

這樣編譯,執行就可以看到選單出現在主視窗上部了

選單項的訊息響應:

選單訊息歸類於

wm_command

,而對於特定的選單項,有相應的訊息值跟他對應,所以只要對

wm_command

訊息進行進一步的分流,就可以新增各個選單的訊息響應。具體**如下:

case wm_command:

wparam=loword(wparam);

switch(wparam)

break;

另外還有一種建立選單的方式:利用

createmenu,createpopupmenu,getmenu,函式

,我們試著在

wm_create

訊息中新增如下**:

case wm_create:

hmenu hmainmenu;

hmenu haddmenu;

hmainmenu=getmenu(hwnd);

haddmenu=createpopupmenu();

insertmenu(hmainmenu,2,mf_byposition | mf_string | mf_popup,(uint)haddmenu,"

格式");

編譯執行,可以看到多了個選單條。

這裡getmenu(hwnd)

獲得hwnd

視窗的選單。然後通過

insertmenu

把之前建立的

haddmenu

連線到hmainmenu

上去。最後新增各子選單項

之前在createwindow

建立視窗時,倒數第三個引數就是

hmenu

結構,試著在這裡給他賦乙個值:

hmenu hmenu,hcmenu1,hcmenu2,hcmenu3;

hmenu=createmenu();

hcmenu1=createpopupmenu();

hcmenu2=createpopupmenu();

hcmenu3=createpopupmenu();

insertmenu(hmenu,0,mf_byposition | mf_string | mf_popup,(uint)hcmenu1,"file");

insertmenu(hmenu,1,mf_byposition | mf_string | mf_popup,(uint)hcmenu2,"view");

insertmenu(hmenu,2,mf_byposition | mf_string | mf_popup,(uint)hcmenu3,"edit");

cw_usedefault,cw_usedefault,cw_usedefault,null,hmenu,hinstance,null);

執行,我們可以看到選單變了,因此在此處也可以新增修改程式的選單,但是這裡不能用

getmenu

,因為hwnd

視窗控制代碼還沒被例項化

關於選單命令的訊息引數說明下:

基本引數說明:

wnotifycode

=hiword(wparam)1

wid=

loword(wparam)

;hwndctl

=(hwnd)1param」;當

wm_command

命令是由選擇選單命令產生時

wnotifycode

引數為0

,wid

引數為選單項的標識導,

hwndctl

引數為null。當

wm_command

命今是來自於快捷鍵時

wnotifycode

引數為1 wid

是快捷鍵標

識號,hwndctl

引數為null

。如果是因為控制項向父視窗發出通知訊息面產生wm—

command

訊息時。

wnotifycode

引數為通知**,

wid為控制項標識號,

hwndctl

引數為控制項控制代碼。

通過enabalemenuitem,enablemenuradioitem,

可以設定選單項的狀態為有效,無效,灰色三種,同時可以呼叫

checkmenuitem,checkmenuradioitem

來改變選單項的選種狀態具體如下**:

enablemenuitem(hmainmenu,idm_exit,mf_bycommand | mf_grayed);

enablemenuitem(haddmenu,1,mf_byposition | mf_grayed);

checkmenuitem(hmainmenu,idm_copy,mf_bycommand |mf_checked);

checkmenuradioitem(haddmenu,idm_alignleft,idm_alignright,idm_alignleft,mf_bycommand);

上班第二天

本想坐晚一班車的,誰知道這晚一班的也只是晚了 五 六分鐘,不高興再在站台上等,也只好小跑到車門上去了,果然,八點十分就到了。白天那個困啊 今天的工作內容和昨天一樣,做到後來我實在覺得測的差不多了,想幹些其他的,但這初來乍到的,也不好幹其他的呀,況且領導辦公室就在我旁邊。今天的工作總結有兩點 1 別把...

第二天實習

今天我早早到了銀行,開始給大家抹桌子,算是向愛妃學習吧。之後向wqy學習做表的方法,他很耐心。今天一天也就是做了這麼乙個表,但是還向dh學習了另外一些業務的處理,收穫不小。中午吃了雞腿 肉串和芸豆,好開心啊。我越來越喜歡自己的實習了。今天好多自己班上的同學來面試實習生,希望她們都能上!今天我沒有去同...

實習第二天

又是早起擠地鐵的一天 今天symphony說給我換了個導師,richard。於是我開始自己看,但是我並不清楚背景,不知道整個資料夾是幹什麼目的的,也不知道哪些檔案是需要看的。然後在richard的講解下,我慢慢明白了,終於知道我是幹啥的了,就是完善優化他們寫的自動化測試程式,首先是要看懂他們寫的。按...