SHMenuBar學習整理

2021-04-27 20:48:36 字數 3169 閱讀 8253

stuido 2008

new project -- other languages-- virual c++ -- smart device-- win32 smart device project

生成的工程模型比較簡潔,下方menu bar 左邊是乙個用來退出程式的soft key,右邊是乙個選單。

牽扯到的知識點:

1. 下方那個叫做menubar,但不要理解成字面上的,實質上它上面既可以放軟鍵,也可以放選單。

用shcreatemenubar 來建立menubar,摘錄小段**:

shmenubarinfo mbi;

memset(&mbi, 0, sizeof(shmenubarinfo));

mbi.cbsize     = sizeof(shmenubarinfo);

mbi.hwndparent = hwnd;

mbi.n*******id = idr_menu;

mbi.hinstres   = g_hinst;

if (!shcreatemenubar(&mbi))

else

2. 工程裡有個以rc2字尾的檔案,也是工程的資源檔案, 用於vc++不能直接進行編輯的資源,以及被多個工程使用的資源。這個檔案中的資源不能在vc的整合環境下直接進行編輯和修改, 而是由我們自己根據需要手工地編輯這個檔案。

這裡生成的rc2檔案就是定義了shmenubar的資源。

//// shmenubar

//idr_menushmenubardiscardable //資源型別(實際就是rcdata

begin

idr_menu, //選單資源的id,因為不同的資源型別id可以相同,系統這裡用了與shmenubar 相同的id。

2,//menubar上按鈕或選單數目

i_imagenone, idm_ok, tbstate_enabled,tbstyle_button| tbstyle_autosize,

ids_ok, 0,nomenu,

i_imagenone, idm_help, tbstate_enabled,tbstyle_dropdown| tbstyle_autosize,

ids_help, 0,0,//最後這個數字是對應的選單資源的選單項的序號(0代表乙個選單項)

end一般來說,wm建議左邊鍵是乙個常用的操作,右邊鍵是選單。所以預設生成的也正是這種模式。

兩邊都是選單一般不會用,太不友好,如果兩邊都想是按鈕,可以如下改:

idr_menu shmenubar discardable

begin

0,

2,i_imagenone,idm_ok, tbstate_enabled,tbstyle_button | tbstyle_autosize,

ids_ok, 0,nomenu,

i_imagenone, idm_help, tbstate_enabled,tbstyle_button | tbstyle_autosize,

ids_help, 0,nomenu,

end在訊息處理函式裡,處理wm_command訊息,來處理不同的按鍵。

switch (message)

break;

3.可以通過引數設定,來通過不同方式或者完成不同效果的menubar

//set up menu bar structure

memset(&mbi, 0, sizeof(shmenubarinfo));

mbi.cbsize     = sizeof(shmenubarinfo);

mbi.hwndparent = hdlg;

mbi.hinstres   = g_hinst;

switch(g_dwcreatemenutype)

if (false == shcreatemenubar(&mbi))

//retain the hwnd to the ******* to destroy it if necessary

hwndmb = mbi.hwndmb;

4. rcdata 格式說明///

// rcdata

//idr_menuok rcdata

begin

0, // menu

1, // count of buttons

i_imagenone,

idc_ok,

tbstate_enabled,

tbstyle_button | tbstyle_autosize,

ids_ok,

0,nomenu,

endidm_main_menu rcdata

begin

idr_menu,

2, i_imagenone, idm_start, tbstate_enabled, tbstyle_button | tbstyle_autosize, ids_start, 0, nomenu,

i_imagenone, idm_stop,tbstate_enabled, tbstyle_dropdown | tbstyle_autosize, ids_stop, 0, 0,

end說明:

idr_menu 我們要用軟鍵顯示的選單的子選單名字

2 說明這個menubar上有幾個選單項

i_imagenone 選單不支援帶有bitmap(0xfffe)

idm_start 用來在wm_command中處理控制項的標識

tbstate_enabled 代表選單的啟用狀態(0x0004)

tbstyle_button | tbstyle_autosize

選單的樣式,具體可以查msdn中wince ******* sytle。

tbstyle_dropdown 這個也是樣式,如果你的選單有子選單,那麼這裡必須要用這個樣式

ids_start 選單上顯示的字,實現在字串資源中定義

最後的0 子選單的索引

nomenu 代表該選單項沒有子選單(0xffff)

Shader學習整理

好久沒寫部落格了,研究了一段時間shader,整理一下 unity的shader包含三種,固定渲染管線,cg片段,su ce表面著色器,unity推薦su ce表面著色器,寫起來簡單,很多東西unity都做好了,實際中往往看具體需求而定,一般選cg片段和su ce表面著色器。然而不管怎麼說,基礎理論...

HN學習整理

變數名 屬性 型別 物件描述名稱要求有明確含義,可以去全稱或簡稱,保證名字的連貫性 屬性部分 g 全域性變數 c 常量 m 類成員變數 s 靜態變數 型別部分 a 陣列 p 指標 fn 函式 v 無效 h 控制代碼 l 長整型 b 布林 f 浮點 檔案 dw 雙字 sz 字串 n 短整型 d 雙精度...

nginx學習整理

nginx nginx是乙個高效能http和反向 伺服器,也是乙個imap pop3 smtp伺服器。能夠支援高達5w以上併發連線數的響應,nginx選擇了epoll kqueue作為網路io模型。nginx也可以作為負載均衡伺服器,nginx使用c語言編寫。nginx是乙個主程序和多個工作程序,工...