Ownerdrawn Menü und Checked Items



  • Ich habe ein Ownerdrawn Menü und wollte mit folgenden Code in DrawItem einen Haken setzen wenn das Item checked ist aber aus irgendeinen Grund wird kein Haken gemacht.

    if(lpDrawItemStruct->itemState &ODS_CHECKED)
      {
    	  TEXTMETRIC tm;
    	  pDC->GetTextMetrics(&tm);
    	  CFont * old_font;
    	  CFont f;
    	  f.CreateFont(
    tm.tmHeight,
    0,
    0,
    0,
    FW_BOLD,
    0,
    0,
    0,
    SYMBOL_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,
    DEFAULT_PITCH,
    "Wingdings");
    	  old_font = pDC->SelectObject(&f);
    	  pDC->SetBkMode(TRANSPARENT );
    	  pDC->TextOut(rectFill.left+5,rectFill.top,"ü");
    	  pDC->SetBkMode( OPAQUE);
    	  pDC->SelectObject(old_font);
      }
    


  • Ich habe herausgefunden woran das vorherige Problem lag.Die ID wurde auf 0 gesetzt,das habe ich jetzt behoben aber dadurch habe ich ein neues Problem.
    Mit den folgenden Zeilen werden die Items auf Ownerdrawn gesetzt.

    UINT uID =GetMenuItemID(i);
    ModifyMenu(i, MF_BYPOSITION | MF_OWNERDRAW,uID, (char*)pObject);
    

    Wenn ich uID auf 0 setze wird das Menue richtig gezeichnet aber ich kann dann keinen Menuepunkt auswählen.Wenn ich mit GetMenuItemID den richtigen Wert eintrage kriege ich mit lpDrawItemStruct->rcItem für die oberen Menuepunkte immer ein 12
    Pixel breites Rechteck zurück und diese Punkte werden dann überlappend gezeichnet.Die Untermenues sind alle in Ordnung.



  • Ich habs behoben indem ich uID für die Oberen Menuepunkte auf 0 gesetzt habe und für die anderen nicht


Anmelden zum Antworten