BOOL WINAPI OnCreate(HWND hwnd) 
{#ifdef _DEBUG 
Console Console("debug",80,80);    //这是个GUI应用程序,所以我写一个控制台类,目的是向控制台输出调式信息.
#endif HMENU hmenuBar = GetMenu(hwnd); 
        .
        .
MENUITEMINFO mii;
        .
        .

mii.fMask = MIIM_SUBMENU;     // information to get //此处获得下拉菜单
//GetMenuItemInfo(hmenuBar, IDM_CHARACTER, FALSE, &mii); 
//hmenuPopup = mii.hSubMenu;        //下面用于测试
printf("The GetmenuItemInfo function return value to be:%d \n"
"The GetMenu返回的值为:%x \n",
GetMenuItemInfo(hmenuBar,IDM_CHARACTER, FALSE, &mii),hmenuBar);
        hmenuPopup = mii.hSubMenu;
        

printf("The Error Code to be:%d",GetLastError());//返回的值是87,说明参数有问题,但不知道怎么解决,  
                                                       //谢谢帮忙
getchar();
以下是资源文件IDC_OWNER_DRAW1 MENU 
BEGIN
    POPUP "文件(&F)"
    BEGIN
        MENUITEM "退出(&X)",                      IDM_EXIT
    END
    POPUP "帮助(&H)"
    BEGIN
        MENUITEM "关于(&A) ...",                  IDM_ABOUT
    END
    POPUP "&Character"
    BEGIN
        MENUITEM " sdfsdf",                     IDM_CHARACTER
        MENUITEM " sdfs",                       IDM_REGULAR
        MENUITEM " sfsdf",                      IDM_BOLD
        MENUITEM " sdfsf",                      IDM_ITALIC
        MENUITEM "asd",                         IDM_UNDERLINE
    END
END

解决方案 »

  1.   

    应该通过HMENU GetSubMenu(          HMENU hMenu,
        int nPos
    );
    先获得POPUP "&Character" 子菜单,然后再调用GetMenuItemInfo
      

  2.   

    GetMenuItemInfo(hmenuBar,2, TRUE, &mii) 可以吗?
      

  3.   

    按你的意思先用GetSubMenu获得菜单条的子菜单,然后再把该返回的句柄把子菜单作为GetMenuItemInfo的参数.
    但是我返回的函数是错误码"87".
      

  4.   

    To xdkui以上为菜单的布局:    HMENU hmenuBar = GetMenu(hwnd); 
            .
            .
        MENUITEMINFO mii;            
            .
            .
        
        mii.fMask = MIIM_SUBMENU;     // information to get //此处获得下拉菜单 
        GetMenuItemInfo(hmenuBar,0,TRUE, &mii);   //返回值依然为0
        hmenuPopup = mii.hSubMenu;