Menue Eintrag ändern mit ModifyMenu (WinCE)



  • Hallo zusammen,

    ich versuche mit ModifyMenu den text des Menüs zur Laufzeit zu verändern.
    Das klappt soweit auch, nur bei den Hauptmenüeinträgen funktioniert es nicht, bzw. der Text läßt sich ändern, aber das Untermenü ist dann weg 😕

    Das ganze läuft auf WinCE 4.20 und wird mit eVC++ 4.0 übersetzt.

    Kann mir da jemand weiterhelfen?

    Mein Code sieht derzeit so aus:

    BOOL CLangText::ReplaceMenuText(CMenu *pMenu, CString *Key, CString Item)
    {
    	if (pMenu==NULL) return 0;
    	CString Text;
    	CString NewItem;
    	CMenu* pSubMenu;
    	int i=0;
    	BOOL ret=1;
    	UINT ID;
    	while(1){
    		NewItem.Format(L"%s%d",Item,i);
    		Text =AfxGetApp()->GetProfileString(*Key,NewItem,L"");
    		if (Text=="-") {i++;continue;}
    		if (Text.GetLength()!=0){
    			ID = pMenu->GetMenuItemID(i);
    			pSubMenu = pMenu->GetSubMenu(i);
    			if(pSubMenu!=NULL){
    //				ret &= pMenu->RemoveMenu(i,MF_BYPOSITION);
    //				ret &= pMenu->InsertMenu(i,MF_BYPOSITION | MF_POPUP | MF_STRING , (UINT) pSubMenu, Text);
    
    //				ret &= pMenu->ModifyMenu(i,MF_BYPOSITION | MF_POPUP | MF_STRING , (UINT) pSubMenu, Text);
    
    				ret &= pMenu->ModifyMenu(i,MF_BYPOSITION|MF_STRING,ID,Text);
    			}
    			else
    				ret &= pMenu->ModifyMenu(i,MF_BYPOSITION,ID,Text);
    
    			if (ret)
    				ReplaceMenuText(pMenu->GetSubMenu(i),Key,NewItem+_T("_"));
    		}
    		else break;
    		i++;
    	}
    	return ret;
    }
    

    Die Auskommentierten Zeilen sind Versuche die leider auch fehlgeschlagen sind.
    23.01.07:leider habe ich noch keine Lösung für dieses Problem 😞


Anmelden zum Antworten