Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Welche Windows Message beim Ändern der Eigenschaften Cap

  Alt 25. Mai 2009, 12:56
Hi Satty,

hätte ich erwähnen sollen:
"WM_SETTEXT" hatte ich auch vermutet, allerdings kommt diese nicht in meinem Hook an

Hier mal ein wenig Code:
Delphi-Quellcode:
  // Hook starten
  FWndHook := SetWindowsHookEx(WH_CALLWNDPROC, pWndProcInst, 0, GetCurrentThreadId());
Delphi-Quellcode:
function TXYZ.CbWndProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var   cwps: TCWPStruct;
      tmpControl : TControl;
      tmpParentControl : TScrollingWinControl;
begin
   case nCode < HC_ACTION of
      True:
         begin
            Result := CallNextHookEx(FWndHook, nCode, wParam, lParam);
         end;
      else begin
         CopyMemory(@cwps, Pointer(lParam), SizeOf(CWPSTRUCT));
         case cwps.message of
            WM_SYSCOMMAND :
               begin
                  DebugMsg('WM_SYSCOMMAND hwnd: '+inttostr(cwps.hwnd)+'wParam: '+inttostr(wParam)+' lParam: '+inttostr(lParam));
                  // Control zu Handle ermitteln
                  tmpControl := FindControl(cwps.hwnd);

                  // Control gefunden ?
                  if Assigned(tmpControl) then begin

                     DebugMsg('WM_SYSCOMMAND '+tmpControl.ClassName);
                  end;               
               end;
            CM_TEXTCHANGED :
               begin
                  DebugMsg('CM_TEXTCHANGED hwnd: '+inttostr(cwps.hwnd));
                  // Control zu Handle ermitteln
                  tmpControl := FindControl(cwps.hwnd);

                  // Control gefunden ?
                  if Assigned(tmpControl) then begin

                     DebugMsg('CM_TEXTCHANGED '+tmpControl.ClassName);
                  end;               
               end;
            WM_SETTEXT :
               begin
                  // Control zu Handle ermitteln
                  tmpControl := FindControl(cwps.hwnd);

                  // Control gefunden ?
                  if Assigned(tmpControl) then begin

                     DebugMsg('WM_SETTEXT '+tmpControl.ClassName);
                  end;               
               end;
            WM_CREATE :
               begin
                  // Control zu Handle ermitteln
                  tmpControl := FindControl(cwps.hwnd);

                  // Control gefunden ?
                  if Assigned(tmpControl) then begin

                     DebugMsg('WM_CREATE '+tmpControl.ClassName);
                  end;
         end;
      end;
   end;
end;
Das WM_CREATE wird mir entsprechend ausgegeben, aber wenn ich z.B. die Caption eines TLabels ändere bekomme ich nichts mit
Ausser ein WM_PAINT glaube ich, aber da muss doch noch was anderes als Message kommen oder wird das bei TControl wirklich abhängig von der Klasse im Paint abgefackelt ?

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat