![]() |
OwnerDrwaMenu und Tastaturshortcuts
Ich zeichne meine Menüs selber, weil ich Bitmaps davor angezeigt haben will.
Delphi-Quellcode:
Jetzt steht dazu im PSDK:
WM_MEASUREITEM:
begin mi := PMEASUREITEMSTRUCT(lParam); case mi.CtlType of ODT_MENU: begin mi.itemWidth := 150; mi.itemHeight := 18; end end; end; WM_DRAWITEM: begin di := PDRAWITEMSTRUCT(lParam); case di.CtlType of ODT_MENU: begin SetBkMode(di.hDC, TRANSPARENT); if (di.itemState and ODS_SELECTED = ODS_SELECTED) then begin di.rcItem.Left := di.rcItem.left + 20; FillRect(di.hDC, di.rcItem, GetSysColorBrush(COLOR_HIGHLIGHT)); SetTextColor(di.hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); DrawText(di.hDC, PChar(di.itemData), lstrlen(PChar(di.itemData)), di.rcItem, DT_SINGLELINE or DT_LEFT or DT_VCENTER); end else begin di.rcItem.Left := di.rcItem.left + 20; FillRect(di.hDC, di.rcItem, GetSysColorBrush(COLOR_MENU)); SetTextColor(di.hDC, GetSysColor(COLOR_MENUTEXT)); DrawText(di.hDC, PChar(di.itemData), lstrlen(PChar(di.itemData)), di.rcItem, DT_SINGLELINE or DT_LEFT or DT_VCENTER); end; if (di.itemState and ODS_GRAYED = ODS_GRAYED) then begin FillRect(di.hDC, di.rcItem, GetSysColorBrush(COLOR_BTNFACE)); SetTextColor(di.hDC, GetSysColor(COLOR_GRAYTEXT)); DrawText(di.hDC, PChar(di.itemData), lstrlen(PChar(di.itemData)), di.rcItem, DT_SINGLELINE or DT_LEFT or DT_VCENTER); end; di.rcItem.Left := di.rcItem.left - 20; MenuBmp(hDlg, di.rcItem, di.itemID, di.hDC); end; end; end; Zitat:
Zitat:
![]() Da es sich bei mir um einen Dialog handelt, dachte ich, müsste es so aussehen:
Delphi-Quellcode:
Nur leider tut sich da nichts. Zur Erklärung was passieren sollte: Öffnet man ein Menü mit der Alt-Taste und dem unterstrichenen Buchstaben, kann man in dem dort aufklappenden Menü einen Item auswählen, in dem man den entsprechend unterstrichenen Buchstaben des Menüitems wählt. Zum Beispiel: Alt+D öffnet das Dateimenü und ein weiter Druck auf den Buchstaben 'S' wählt den Menüpunkt 'Speichern' aus.
WM_MENUCHAR:
begin SetWindowLong(hDlg, DWL_MSGRESULT, MakeLong(loword(wParam), MNC_SELECT)); end; |
Re: OwnerDrwaMenu und Tastaturshortcuts
Schicke mir mal deinen Code zu und ich gucke mal drüber.
|
Re: OwnerDrwaMenu und Tastaturshortcuts
Geht nicht ganz so einfach, ich teste das gerade am Usermanager. Aber ich werde heute iom Laufe des Tages noch mal ein Demoprojekt machen.
|
Re: OwnerDrwaMenu und Tastaturshortcuts
Dann schick mir halt den Code vom Usermanager. Wo ist das Problem? Hattest mir doch sowieso mehrfach angeboten, den zuzuschicken. Soll mir dann auch egal sein. Keine Angst, ich verkaufe ihn nicht :mrgreen: ... ich persönlich habe mehr Angst, daß man ihn mir klauen könnte und dann weitergibt, was ich wiederum dir gegenüber verantworten müßte. Deswegen habe ich bisher abgelehnt. Wenn dann auf jeden Fall per Email schicken!
|
Re: OwnerDrwaMenu und Tastaturshortcuts
Hehe, das meinte ich nicht. Es wäre bestimmt einfacher für dich, wenn du den ganzen Code drumrum nicht hättest. Ich schnüre dann mal das Packetchen.
|
Re: OwnerDrwaMenu und Tastaturshortcuts
Na so schlimm wird der Code drumherum ja nicht sein :lol: ... oder doch? :zwinker:
|
Re: OwnerDrwaMenu und Tastaturshortcuts
Nun ja, Motzi hat das ein oder andere etwas verschönert. ;)
Er ist unterwegs. Zwei Sachen gleich noch: 1. Normalerweise werden die Bitmaps von menüs ja so etwas erhaben dargestellt, wenn man mit der Maus über den Item fährt, das habe ich auch noch nicht. Und 2. Die vertiefte Darstellung von deaktivierten Items. Die sind bei mir bisher einfach grau. Ich weiß auchn icht, wie es unter XP mit Themes aussieht. :roll: |
Re: OwnerDrwaMenu und Tastaturshortcuts
Zitat:
Es ist angekommen. Zitat:
Zitat:
Es handelt sich doch ums Hauptmenü, denke ich mal? Oder ist es offensichtlich? |
Re: OwnerDrwaMenu und Tastaturshortcuts
Es handelt sich um das Menü des Hauptfensters, sollte aber auch offensichtlich sein, da es zu Testezwecken nur aus drei Punkten besteht. Das original Menü ist noch in der Ressource drinne, nur eben im Moment nicht mit dem Hauptfenster verknüpft.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz