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的講解下,我慢慢明白了,終於知道我是幹啥的了,就是完善優化他們寫的自動化測試程式,首先是要看懂他們寫的。按...