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