下面是我更改按钮文本的一段程序
 void ProcItemLan(UINT ResourceID,HWND hwnd,void *puserdata)
{
  pitem=GetItemInfo(ResourceID);
  CButton * pbutton;
  switch(pitem->ztype){
      case SV_R_BUTTON:
           pbutton=(CButton*)puserdata;
           if(Lanindex==LAN_EN)
           pbutton->SetWindowText(pitem->English);
           else
           pbutton->SetWindowText(pitem->Chinese);
      break;
}
我想按这个思路更改菜单栏的中英文文本切换,应该先定义一个CMenu * pmenu;下面case中的内容就不会了CMenu中无法使用SetWindowText,还有菜单栏没有ResourceID,只有子菜单栏才有ResourceID,如何动态的更改

解决方案 »

  1.   

    你这个方式行不通的。菜单项不能用SetWindowText来修改。
      

  2.   

    dll
    ini
    资源
    好多种方法
      

  3.   

    没有id,可以by position方式来修改。
      

  4.   

    HMENU hmenu, hsubmenu;
    hmenu = ::GetMenu( this->GetSafeHwnd() ); ::ModifyMenu( hmenu, 0, MF_BYPOSITION, 0, "File(&F)" );
    ::ModifyMenu( hmenu, 1, MF_BYPOSITION, 1, "Edit(&E)" );
    ::ModifyMenu( hmenu, 2, MF_BYPOSITION, 2, "View(&V)" );
    ::ModifyMenu( hmenu, 3, MF_BYPOSITION, 3, "Options(&O)" );
    ::ModifyMenu( hmenu, 4, MF_BYPOSITION, 4, "Snoopery(&S)" );
    ::ModifyMenu( hmenu, 5, MF_BYPOSITION, 5, "Assistant(&A)" );
    ::ModifyMenu( hmenu, 6, MF_BYPOSITION, 6, "Tools(&T)" );
    ::ModifyMenu( hmenu, 7, MF_BYPOSITION, 7, "Help(&H)" );