none
关于菜单的一个问题 RRS feed

  • 问题

  • 这里smartphone 2003程序,首先加载菜单:
     C/C++ code
    //加菜单
    SHMENUBARINFO mbi;
     memset(&mbi, 0, sizeof(SHMENUBARINFO));
    mbi.cbSize = sizeof(SHMENUBARINFO);
    mbi.dwFlags = SHCMBF_HMENU;
    mbi.hwndParent = m_hWnd;
    mbi.nToolBarId = IDR_MENU1;//菜单资源ID
    mbi.hInstRes = ::AfxGetInstanceHandle();
    SHCreateMenuBar(&mbi);
    没有任何问题,一切都是那么正常。
    现在我再像上面一样,加载第一个菜单,去覆盖掉前面加的那一个:
     C/C++ code
    //加菜单
    SHMENUBARINFO mbi;
    memset(&mbi, 0, sizeof(SHMENUBARINFO));
    mbi.cbSize = sizeof(SHMENUBARINFO);
    mbi.dwFlags = SHCMBF_HMENU;
    mbi.hwndParent = m_hWnd;
    mbi.nToolBarId = IDR_MENU2;//菜单资源ID
    mbi.hInstRes = ::AfxGetInstanceHandle();
    SHCreateMenuBar(&mbi);
    貌似没有什么问题。的确,肉眼也很难发现错误。
    但是点击左右软键的时候,发现,新加的菜单,显示时没问题, 但是响应的是前面的左右软键。
    这里就不是很明白了,难道不支持这种覆盖么?在wm5,6上面试过了,都是可以的。就现在在这个sp2003上面不行。
    于是我打算,来个动态加载,需要啥加啥,加之前将原来已经加的销毁掉,哎!可惜不知道怎么去销毁掉,很是郁闷。
    望大家出出主意,或者是有更好的办法。先谢之。
    Liam
    2009年4月14日 6:22

答案