如何在smartphone中定义MenuBar的结构

 要在SP中使用SHCreateMenuBar来创建一个MenuBar,需要以下条件:

1)定义好Resource文件中的RC和RC2中的资源。

    YourAppName.rc:

-------------------------------------------------------------

     IDR_MENU2 MENU (这个Menu定义是未来显示右键弹出菜单的,IDR_MENU2为Resrouce_ID,在YouAppName.rc2 中会用到)
BEGIN
    POPUP "MenuRoot"  (subMenuIndex:0)
    BEGIN
        MENUITEM "MenuOne",                     ID_MENUROOT_MENUONE
        MENUITEM "MenuTwo",                     ID_MENUROOT_MENUTWO
        POPUP "MenuThrid"
        BEGIN
            MENUITEM "CAMENU1",                     ID_MENUTHRID_CAMENU1
            MENUITEM "CAMENU2",                     ID_MENUTHRID_CAMENU2
        END
    END
    POPUP "SecMenu" POPUP "MenuRoot"  (subMenuIndex:1)
    BEGIN
        MENUITEM "SEC_!",                       ID_SECMENU_SEC
        MENUITEM "SEX-2",                       ID_SECMENU_SEX
    END
END

--------------------------------------------------------------------------

YourAppName.rc2 中定义了SHMenuBar 的资源结构


IDR_MAINFRAME SHMENUBAR DISCARDABLE( IDR_MAINFRAME是SHCreateMemnuBar 中用到的结构SHMENUBARINFO要使用的RESOURCE ID,SHMENUBAR是资源类型,一定不能错。)
BEGIN
    IDR_MENU2, ( 这个是在RC文件中定义的要弹出的菜单Resourc ID)
    2,(显示一个按钮还是两个按钮)
   
    I_IMAGENONE, IDOK(这个是在程序中用到的ID来区分按了那个软键), TBSTATE_ENABLED(启用), TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE,
    IDS_OK(软键显示的字符串,这个跟Popup无关), 0, NOMENU(没有弹出菜单),
    I_IMAGENONE(SP中一定是这个值), IDM_RSKBUTTON, TBSTATE_ENABLED, TBSTYLE_DROPDOWN  | TBSTYLE_AUTOSIZE(有弹出菜单的话,一定是TBSTYLE_DROPDOWN),
    IDS_OK, 0, 1(这里是0还是1.或者2,n之类的书最重要,因为他决定着那个Popup对应的menu会显示出来。),
END
--------------------------------------------------


其实,在资源文件中,有RC和rc2区别,按照MSDN的说法,RC2只是为了方便定义一些少用的数据而来的,如果你想显示菜单,就必须对这两种文件的定义格式要很清楚。

比如,想显示2个按钮,和一个右键菜单。
注意: 一定不要以为右键菜单的顶头项(就是Popup项)就是右边的按钮。


IDR_MAINFRAME 是在创建SHMENUBAR时SHMENUBARINFO用到的ID
IDR_MENU2是弹出的菜单的ID(这个是要在资源文件中定义得)
IDM_LEFT是左键的BUTTON(这个ID,是在程序中捕捉得用户选择后的反应ID,就是用他来识别用户选择的)
IDM_RIGHT是右键的button(这个是最关键的,我一直搞混淆了,以为在rc资源编辑器里,设置了那个最顶的那个项这里就会自动的弹出菜单,这个也是一个UINT类型的值,而且,如果要弹出来,菜单的属性要设置对。)
TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE就是能弹出菜单的选项。


 

 

 

 

 

你可能感兴趣的:(如何在smartphone中定义MenuBar的结构)