AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Transparent Edit

Ein Thema von EWeiss · begonnen am 22. Aug 2012 · letzter Beitrag vom 27. Aug 2012
 
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: Transparent Edit

  Alt 22. Aug 2012, 21:30
Hab doch noch ein probleme bzg. des Subclassing.

Delphi-Quellcode:
constructor TSkinEdit.Create(hOwner: HWND; Visible: Bool; x, y, xW, yH, EditID: Integer);
begin

  if Visible then
  begin
    LStyle := WS_VISIBLE or WS_CHILD or ES_NOHIDESEL;
  end else
  LStyle := WS_CHILD or ES_NOHIDESEL;

  FHEdit := CreateWindowEx(WS_EX_TRANSPARENT or WS_EX_CLIENTEDGE, 'EDIT',
    'Was nun? Nur ein Test!', LStyle, x, y, xW, yH, hOwner, EditID,
    hInstance, nil);

  if FHEdit <> 0 then
  begin
    SubClass(Handle);

  end;
end;
Delphi-Quellcode:
procedure TSkinEdit.SubClass(WinHandle: HWND);
begin

  FClientInstance := MakeObjectInstance(ClientWndProc);

  FPrevClientProc := Pointer(GetWindowLong(WinHandle, GWL_WNDPROC));
  SetWindowLong(WinHandle, GWL_WNDPROC, Integer(FClientInstance));
end;

Messagen die zur zeit GeSubclassed werden

Delphi-Quellcode:
procedure TSkinEdit.ClientWndProc(var Message: TMessage);
begin
  with Message do
  begin
    case Msg of
      WM_ERASEBKGND:
        Result := EditProc(Handle, integer(Msg), Message.WParam, Message.LParam);
      WM_PAINT:
        Result := EditProc(Handle, integer(Msg), Message.WParam, Message.LParam);
      WM_GETTEXT:
        Result := EditProc(Handle, integer(Msg), Message.WParam, Message.LParam);
      WM_GETTEXTLENGTH:
        Result := EditProc(Handle, integer(Msg), Message.WParam, Message.LParam);
    end;
  end;
end;
Probleme die ich nun habe
1. Kein Focus auf das Edit
2. Kein Rechter Mausclick wird ausgelöst
3. Edit läßt sich nicht editieren

Deaktiviere ich die Subclass dann sind alle die genannten Functionen so wie sie sein sollen.
Dann ist sie allerdings nicht mehr transparent und ohne OwnerdrawText.

Was fehlt?
Hab mich im NET mal dumm und dusselig gesucht finde nicht die
passenden WM Messagen oder was auch immer um die probleme zu beheben.

Edit:
Ok werde wohl mal ne Standard Edit mit Winspector überwachen.
Und prüfen welche Messagen ausgelöst werden.

gruss

Geändert von EWeiss (22. Aug 2012 um 22:33 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 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