Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Re: Subclassing: Messages verschluckt?
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   03.01.19 18:00

So geht's :
 
 declare hT%,s$,hBrush%,OldWndProc&
  
  SUBCLASSPROC
    declare ret&
    ret&=0
    if &sWnd=%HWnd
      if %sMessage=312 '312=~WM_CTLCOLORSTATIC
        print "...WM_CTLCOLORSTATIC aufgetreten"
        if &sLParam=hT%
          @external("gdi32.dll","SetBkMode",&sWParam,1) '1=~TRANSPARENT
          @external("gdi32.dll","SetTextColor",&sWParam,@rgb(255,0,0))
          ret&=hBrush%
          @set("winproc",0)
        endif
      endif
    endif
    return ret&
  ENDPROC
  
  PROC CallBackProc
    parameters hWnd&,Message&,wParam&,lParam&
    if Message&=312 '312=~WM_CTLCOLORSTATIC
      print "...WM_CTLCOLORSTATIC aufgetreten"
      if lParam&=hT%
        @external("gdi32.dll","SetBkMode",wParam&,1) '1=~TRANSPARENT
        @external("gdi32.dll","SetTextColor",wParam&,@rgb(255,0,0))
        return hBrush%
      endif
    else
      return @external("user32.dll","CallWindowProcA",OldWndProc&,hWnd&,Message&,wParam&,lParam&)
    endif
  ENDPROC
  
  cls
  hT% = @create("TEXT",%HWnd,"Test",10,10,300,20)
  set("fastmode",1)
  hBrush%=@external("gdi32.dll","CreateSolidBrush",@rgb(0,255,0))
  locate 5,1
  print "mit Subclassing (Taste drücken)..."
  WaitKey
  subclass %HWnd,1
  hT% = @create("TEXT",%HWnd,"Test",10,10,300,20)
  settext hT%,"settext mit Subclassing"
  
  WaitInput
  subclass %HWnd,0
  
  print
  print "mit Callback (Taste drücken)..."
  OldWndProc&=@external("user32.dll","GetWindowLongA",%hWnd,-4) '-4=~GWL_WNDPROC
  @external("user32.dll","SetWindowLongA",%hWnd,-4,@procaddr("CallBackProc",4)) '-4=~GWL_WNDPROC
  waitinput
  settext hT%,"settext mit Callback"
  waitinput
  @external("user32.dll","SetWindowLongA",%hWnd,-4,OldWndProc&)
  
  deleteobject hBrush%
  set("fastmode",0)
  print
  print "Programmende (Taste drücken)..."
  waitinput
  end
  


Wie man sieht, tritt WM_CTLCOLORSTATIC zweimal auf.
Einmal beim Erstellen des Textcontrols und einmal beim
Settext.

H.Brill
XProfan X4 + FreeProfan

Nachricht bearbeitet (03.01.19 18:39)

 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 Subclassing: Messages verschluckt?  Neu
Jens-Arne Reumschüssel 30.12.18 16:44 
 Re: Subclassing: Messages verschluckt?  Neu
Karl-Jürgen Hilger 03.01.19 14:24 
 Re: Subclassing: Messages verschluckt?  Neu
Heinz Brill 03.01.19 18:00 
 Re: Subclassing: Messages verschluckt?  Neu
Karl-Jürgen Hilger 03.01.19 20:00 
 Re: Subclassing: Messages verschluckt?  Neu
Heinz Brill 03.01.19 21:11 
 Re: Subclassing: Messages verschluckt?  Neu
Karl-Jürgen Hilger 03.01.19 22:40 
 Re: Subclassing: Messages verschluckt?  Neu
Heinz Brill 04.01.19 07:24 
 Re: Subclassing: Messages verschluckt?  Neu
Karl-Jürgen Hilger 04.01.19 09:12 
 Re: Subclassing: Messages verschluckt?  Neu
Jens-Arne Reumschüssel 04.01.19 23:59 
 Re: Subclassing: Messages verschluckt?  Neu
Karl-Jürgen Hilger 05.01.19 12:31 
 Re: Subclassing: Messages verschluckt?  Neu
Heinz Brill 05.01.19 07:20 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org