1、建立並顯示選單,先在資源裡新增選單,然後如下**
shmenubarinfo mbi;
zeromemory(&mbi, sizeof(shmenubarinfo));
mbi.cbsize = sizeof(shmenubarinfo);
mbi.hwndparent = m_hwnd;
mbi.hinstres = ::afxgetinstancehandle();
mbi.dwflags = shcmbf_hmenu | shcmbf_hidesipbutton; // 隱藏sip
mbi.n*******id = idr_mymenu;
shcreatemenubar(&mbi);
2、隱藏選單
hwnd hwnd = ::shfindmenubar(m_hwnd);
if(hwnd != null)
::showwindow(hwnd, sw_hide);
3、隱藏某個子選單
hmenu hmenu = null;
tbbuttoninfo tbbi = ;
tbbi.cbsize = sizeof(tbbuttoninfo);
tbbi.dwmask = tbif_lparam | tbif_byindex;
::sendmessagew(mbi.hwndmb, tb_getbuttoninfo, 1, (lparam)&tbbi); // 0為softkey1,1為softkey2
hmenu = (hmenu)tbbi.lparam;
enablemenuitem(hmenu, idm_test, mf_grayed); // 隱藏子選單
enablemenuitem(hmenu, idm_test, mf_enabled); // 顯示子選單
4、使某個softkey不可用
::shenablesoftkey(mbi.hwndmb, 0, true, false);
如果命令欄是使用mfc方式建立的,這裡的mbi.hwndmb可以使用ccommandbar型別成員變數m_dlgcommandbar.m_hwnd代替。
5、動態修改選單
modifymenu(hmenu, idm_test, mf_disabled | mf_string, idm_test, l"修改後的文字");
insertmenu(hmenu, beforeitem, mf_bycommand, afteritem, l」新增加的選單」); // 加入含有欲改寫文字的選單項
deletemenu(hmenu, beforeitem, mf_bycommand); // 刪除被改寫的選單
drawmenubar(); // 重新整理選單
注意:此hmenu必須使用第三點的方法得到,在mfc方式生成的對話方塊類中的 m_dlgcommandbar.getmenu()得到的hmenu跟第三點裡得到的結果是不一致的,我試過操縱m_dlgcommandbar.getmenu()方式得到的hmenu,結果是選單確實是更改了,但是顯示沒有效果而用第三點的方法得到的hmenu是有效果的。 Windows Mobile中GPRS連線網路
windows mobile程式中如果要使用http或socket連線伺服器,需要先連線網路。可以使用connmgrestablishconnectionsync函式來連線。如果知道乙個接入點的名稱,則可以通過connmgrenumdestinations得到相應接入點的guiddestnet。然後...
Windows Mobile中GPRS連線網路
windows mobile程式中如果要使用http或socket連線伺服器,需要先連線網路。可以使用connmgrestablishconnectionsync函式來連線。如果知道乙個接入點的名稱,則可以通過connmgrenumdestinations得到相應接入點的guiddestnet。然後...
在Windows Mobile上隱藏你的應用程式
有時候,我們需要在windows mobile上做一些invisible的應用程式,使得使用者無法察覺。這幾天找了一些資料,請教了 jake 等一些朋友,下面就做乙個簡單的總結。1.如何逃脫 任務管理器 大家知道,在windows mobile上做自己的應用程式,會在 設定 系統 記憶體 執行的程式...