Dynamisch erstelltes Menü und Haken



  • Ich erstelle Menüeinträge aus einer Datenbank:

    int cid = -1;
    while (!reco->IsEOF())
    {
      cid++;
      COleVariant fv;
      reco->GetFieldValue(0,fv);
      CString mitem = fv.pbVal;
      m.GetSubMenu(3)->GetSubMenu(0)->InsertMenu(0,MF_BYPOSITION|MF_STRING,BOERSEN_ID1+cid,mitem);
     if(GetConfig(mitem) =="Ja")//GetConfig:Funktion die aus einer Konfigurationstabelle in der DB liest
     {
      m.GetSubMenu(3)->GetSubMenu(0)->CheckMenuItem(MF_BYCOMMAND|MF_CHECKED,BOERSEN_ID1+cid);
      boerse_suchen.Add(1);//CUIntArray das den Zustand der Menüeinträge speichert
     }
     else
     {
      m.GetSubMenu(3)->GetSubMenu(0)->CheckMenuItem(MF_BYCOMMAND|MF_UNCHECKED,BOERSEN_ID1+cid);
      boerse_suchen.Add(0);
      }
      reco->MoveNext();
    }
    

    und frage dann mit ON_COMMAND_RANGE ab,ob auf einen der Einträge geklickt wurde:

    void CMeinDlg::OnMenupunkt(UINT nID)
    {
    	CString mitem;
    	m.GetMenuString(nID,mitem,MF_BYCOMMAND);
    	if(boerse_suchen[nID-BOERSEN_ID1]== 0)
    	  {
    		  m.GetSubMenu(3)->GetSubMenu(0)->CheckMenuItem(MF_BYCOMMAND|MF_CHECKED,nID);
    		  boerse_suchen[nID-BOERSEN_ID1]=1;
    		  SetConfig(mitem,"Ja");
    	  }
    	  else
    	  {
    		  m.GetSubMenu(3)->GetSubMenu(0)->CheckMenuItem(MF_BYCOMMAND|MF_UNCHECKED,nID);
    		  boerse_suchen[nID-BOERSEN_ID1]=0;
    		  SetConfig(mitem,"Nein");
    	  }
    }
    

    Aber weder beim Start des Programms noch nach klicken auf einen Eintrag wird dieser angehakt.Was mache ich falsch?



  • Hast du eine Dialogfeldbasierende Anwendung?



  • Ja



  • Hat sich erledigt 👍



  • Habs selbst gefunden hab die Parameter in der falschen Reihenfolgen


Anmelden zum Antworten