Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Winproc ärger (https://www.delphipraxis.net/128364-winproc-aerger.html)

EWeiss 28. Jan 2009 22:14

Re: Winproc ärger
 
Zitat:

Zitat von lbccaleb
Was genau meinst du mit du kommst nicht herrein?
Wie gesagt, wenn der Parameter "0" ist, gehts an Menü...

Keine Ahnung was du mit 0 hast.
Ich erfrage nicht WP sondern LP hab ich doch geschrieben.

Es geht dann ans Menu wenn
PDis^.CtlType := ODT_MENU ist und das Flag ist mit den wert 1 deklariert.

gruss Emil

Sunlight7 28. Jan 2009 22:48

Re: Winproc ärger
 
Zitat:

WM_DRAWITEM

idCtl = (UINT) wParam; // control identifier
lpdis = (LPDRAWITEMSTRUCT) lParam; // item-drawing information


The WM_DRAWITEM message is sent to the owner window of an owner-drawn button, combo box, list box, or menu when a visual aspect of the button, combo box, list box, or menu has changed.

Parameters

idCtl

Value of wParam. Specifies the identifier of the control that sent the WM_DRAWITEM message. If the message was sent by a menu, this parameter is zero.

lpdis

Value of lParam. Points to a DRAWITEMSTRUCT structure containing information about the item to be drawn and the type of drawing required.

Return Value

If an application processes this message, it should return TRUE.
Das meinte er mit der 0

EWeiss 28. Jan 2009 23:00

Re: Winproc ärger
 
Ja!
aber helfen tut mir das nicht denn wie dort beschrieben muß ein DrawEvent ausgelößt werden
Zitat:

when a visual aspect of the list box has changed.
von der ListBox damit ich in die Message WM_DRAWITEM hineingelange.

damit meine ich in vorherigen Beitrag ich komm da nicht rein
obwohl der Text usw.. gezeichnet wird.

Kann mir nur noch vorstellen das eventuell der Focus zur ListBox verloren geht.

gruss Emil

Sunlight7 29. Jan 2009 02:15

Re: Winproc ärger
 
Wenn Du LBS_OWNERDRAWFIXED auskommentierst irgendwie kein Wunder, das die MSG nicht kommt ;)
Du kannst IMHO Windows nicht direkt zwingen so eine Nachricht zu generieren, das macht es, wenn was neu zu zeichnen ist.

Definiere "// LBS_OWNERDRAWFIXED verursacht ärger keine ahnung warum".

So mal geraten, der Ärger hat mit fehlendem WM_MEASUREITEM zu tun?

EWeiss 29. Jan 2009 05:23

Re: Winproc ärger
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Wenn Du LBS_OWNERDRAWFIXED auskommentierst irgendwie kein Wunder, das die MSG nicht kommt ;)
Ja stimmt hab es im nachhinein auch bemerkt. ;)
LBS_OWNERDRAWFIXED hat auch kein problem verursacht sondern das zeichnen des Text über

Delphi-Quellcode:
DTP.cbSize := SizeOf(DTP);
    DrawTextEx(PDis.hDC, ItemText, l, PDis.rcItem, DT_LEFT
      or DT_VCENTER or DT_SINGLELINE, @DTP);
DrawTextEx will irgendwie nicht.
Hab mal ne kleine Anwendung in VB gemacht um das gegen zu prüfen da funktioniert alles
Unter Delphi will das nicht.

verwende jetzt
Delphi-Quellcode:
    ExtTextOut(PDis.hDC, 1 + PDis.rcItem.left,
      PDis.rcItem.Top, ETO_OPAQUE,
      @PDis.rcItem, PAnsiChar(ItemText), Length(ItemText), nil);
anstelle dessen.
Die Frage ist nur was besser ist.
Zitat:

Du kannst IMHO Windows nicht direkt zwingen so eine Nachricht zu generieren, das macht es, wenn was neu zu zeichnen ist.
Das ist klar ... hab mir schon gedacht das was fehlt siehe LBS_NOTIFY in verbindung mit LBN_DBLCLK
Geht ohne LBS_NOTIFY auch nicht ;)

Zitat:

So mal geraten, der Ärger hat mit fehlendem WM_MEASUREITEM zu tun?
Benötige ich nur für das Menü und ist vorhanden.
Die Proc in der ListBox hab ich rausgeschmissen und leite die SubClass jetzt direkt auf
die Winproc der mainform um.

gruss Emil

EDIT:
Noch ein pic
Nur noch ein Bitmap für den Hintergrund der Listbox dann ist es fertig
Und noch was an den farben machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr.
Seite 2 von 2     12   

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