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是乙個主程序和多個工作程序,工...