• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無(wú)以明志,非寧?kù)o無(wú)以致遠(yuǎn)。
            隨筆 - 398, 文章 - 0, 評(píng)論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            WM5.0中的自定義菜單

            VS2005的菜單編輯器就是這樣設(shè)計(jì)的,也就是在菜單編輯器中編輯的只是菜單的內(nèi)容,這些內(nèi)容是保存在rc文件中的,而菜單條是作為RCDATA保存在rc2資源文件中。在WM5.0中,無(wú)論是ppc中的菜單還是sp中的菜單,都是一樣的,即支持左右軟鍵,左右軟鍵分別可以彈出一個(gè)菜單。所以,微軟認(rèn)為這個(gè)東西不是菜單,是工具條,而真正的菜單是左右軟鍵彈出的那個(gè)東西。所以,在菜單編輯器中編輯的是左右軟鍵彈出的菜單,而在rc2文件中保存的是工具條的定義。


            Mobile的工具條和菜單兩者是分開(kāi)來(lái)定義的,一個(gè)定義工具條(rc2),一個(gè)定義菜單(rc),所以在VS2005中除了(EVC4.0好像可以自動(dòng)創(chuàng)建)新增菜單外,還要手動(dòng)創(chuàng)建rc2文件,如果采用MFC工程,那么rc2是工程自動(dòng)產(chǎn)生,否則就要自己創(chuàng)建rc2文件。
            手動(dòng)增加rc2文件如下:     /////////////////////////////////////////////////////////////////////////////     //     //   Data     //         //rc2文件描述的是工具條上的兩個(gè)按鈕,并不包括彈出的菜單項(xiàng),格式如下:    
            //<Menu   ID>,   <Number   of   buttons   (1   or   2)>,     //I_IMAGENONE,   <Cmd1ID>,   <Btn1State>,   <Btn1Style>,   <String1ID>,   0,   <Menu1Index>     //I_IMAGENONE,   <Cmd2ID>,   <Btn2State>,   <Btn2Style>,   <String2ID>,   0,   <Menu2Index>        
            //Menu   ID:整個(gè)菜單的ID     //Number   of   buttons   (1   or   2):菜單銨鈕的個(gè)數(shù),這里有兩個(gè),一個(gè)是Option,一個(gè)是About     //I_IMAGENONE:SP的菜單沒(méi)有圖標(biāo)    
            //Cmd1ID:對(duì)應(yīng)菜單項(xiàng),如:IDR_MAIN_MENU    
            //Btn1State:定義是否有效,TBSTATE_ENABLED有效,無(wú)效就是TBSTATE_DISABLED了    
            //Btn1Style:表示是下拉菜單還是按鈕,如果是下拉菜單是TBSTYLE_DROPDOWN,     //如果不是則為T(mén)BSTYLE_BUTTON,還有大小等屬性,這里的按鈕也不需要定義大小,用TBSTYLE_AUTOSIZE    
            //String1ID:子菜單對(duì)應(yīng)的字符串資源,菜單顯示的內(nèi)容        
            //Menu1Index:如果是按鈕,則用NOMENU,如果是下拉菜單,     //表示了菜單項(xiàng)的序號(hào),0表示第一個(gè),1表示第二個(gè)...         IDR_MAIN_MENU   SHMENUBAR   DISCARDABLE   //整個(gè)菜單的ID     BEGIN     IDR_MAIN_MENU,   2,         I_IMAGENONE,   IDR_MAIN_MENU,   TBSTATE_ENABLED,   TBSTYLE_DROPDOWN   |   TBSTYLE_AUTOSIZE,     IDS_OPTION,   0,   0,         I_IMAGENONE,   IDM_ABOUT,   TBSTATE_ENABLED,   TBSTYLE_BUTTON   |   TBSTYLE_AUTOSIZE,             IDS_ABOUT,   0,   NOMENU,     END    
            //END之后一定要加回車,否則編譯報(bào)fatal   error   RC1004的錯(cuò)誤                 還要在RC文件中最下面增加:     #ifndef   APSTUDIO_INVOKED     /////////////////////////////////////////////////////////////////////////////     //     //   Generated   from   the   TEXTINCLUDE   3   resource.  
            如果是MFC工程,IDS_OPTION的字符串定義在資源視圖中的String Table中定義,菜單的ID最好是用系統(tǒng)的向?qū)?lái)加,手動(dòng)在resourceppc.h中定義,有時(shí)不起作用。如果我們加載的一個(gè)是菜單一個(gè)是按鈕,只要把rc2文件中菜單和按鈕兩行代碼一交換,它們?cè)诠ぞ邨l上的左右位置也就隨之交換。如果在工具條上只要一個(gè)按鈕或菜單,只要把不要的那個(gè)菜單或按鈕代碼中的IDS_OPTION項(xiàng)置為0即可。按鈕的ID可以是資源中任意按鈕的ID,如OK按鈕等。
            加載菜單的代碼很多,用下面的就可以:
            SHMENUBARINFO mbi;
             ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
             mbi.cbSize      = sizeof(SHMENUBARINFO);
             mbi.hwndParent  = this->m_hWnd;
             mbi.nToolBarId  = IDR_PVIEWCE_SUBMENU1;//這個(gè)ID在resourceppc.h中定義,一般要手動(dòng)加
             mbi.hInstRes    = ::AfxGetInstanceHandle();

             if (!SHCreateMenuBar(&mbi))
              return ;

            posted on 2008-12-14 20:25 Benjamin 閱讀(877) 評(píng)論(1)  編輯 收藏 引用 所屬分類: PDA/PPC開(kāi)發(fā)

            評(píng)論

            # re: WM5.0中的自定義菜單  回復(fù)  更多評(píng)論   

            哈哈,內(nèi)容不錯(cuò),正解決這個(gè)問(wèn)題呢
            2010-04-29 17:15 | housan321
            久久久久成人精品无码中文字幕| 色天使久久综合网天天| 狠狠色狠狠色综合久久| 波多野结衣久久| 99久久精品国产一区二区 | 久久久久国产精品嫩草影院| 久久夜色撩人精品国产小说| 久久99热这里只有精品国产| 国产免费久久久久久无码| 国产日韩欧美久久| 久久一区二区三区免费| 久久婷婷五月综合国产尤物app| 亚洲精品乱码久久久久久| 久久亚洲AV成人无码电影| 91精品久久久久久无码| 性欧美大战久久久久久久| 久久丫精品国产亚洲av| 99久久国产综合精品五月天喷水 | 色妞色综合久久夜夜| 国产成人精品久久| 亚洲国产二区三区久久| 伊人久久成人成综合网222| 久久综合狠狠综合久久综合88 | 人妻无码久久精品| 久久香综合精品久久伊人| 精品无码久久久久久国产| 国色天香久久久久久久小说| 久久91精品国产91久久麻豆| 婷婷久久五月天| 国产激情久久久久影院| 伊人久久无码中文字幕| 久久婷婷五月综合97色直播| 久久久久人妻精品一区二区三区| 久久久久人妻一区精品| 久久99精品国产自在现线小黄鸭 | 亚洲精品第一综合99久久| 久久精品人人做人人爽97| 久久综合偷偷噜噜噜色| 狠狠色丁香婷综合久久| 久久久国产精华液| 久久无码AV中文出轨人妻|