| |
|
|
Detlef Jagolski | Salut,
habe cela Beispiel aus qui Aider de XProfan 10 Umgebaut avec den neuen Funktionen de XProfan 11.
Hat einer une concept pourquoi cela pas Klappt?
Salut
Detlef KompilierenMarqueSéparation-Begin-----------------------------------------------------------------
-HeaderFiles---------------------------------------------------------
MESSAGES.PH
WINDOWS.PH
-Variables Declaration-----------------------------------------------
Declare Ende%, OldWndProc&, hButton%
Declare hText1%, TextBk1&, hText2%, TextBk2&, hText3%, TextBk3&
-CallBack Routine----------------------------------------------------
SubClassProc
If SubClassMessage(%hwnd, ~WM_CTLCOLORSTATIC)
-Fuer Text1 Farbe setzen---------------------------------------
If &sLParam = hText1%
~SetBkMode(&sWParam, ~TRANSPARENT)
~SetTextColor(&sWParam, @RGB($FF, $00, $00)) -Rot-----------
Return TextBk1&
Set(WinProc,1)
-Fuer Text2 Farbe setzen---------------------------------------
ElseIf &sLParam = hText2%
~SetBkMode(&sWParam, ~TRANSPARENT)
~SetTextColor(&sWParam, @RGB($00, $00, $FF)) -Blau----------
Return TextBk2&
Set(WinProc,1)
-Fuer Text3 Farbe setzen---------------------------------------
ElseIf &sLParam = hText3%
~SetBkMode(&sWParam, ~TRANSPARENT)
~SetTextColor(&sWParam, @RGB($00, $FF, $00)) -Gruen---------
Return TextBk3&
Set(WinProc,1)
EndIf
Set(WinProc,0)
EndIf
EndProc
-Main----------------------------------------------------------------
-Hintergrundfarben festlegen---------------------------------------
TextBk1& = ~CreateSolidBrush(@RGB($00, $FF, $FF)) -Cyan----------
TextBk2& = ~CreateSolidBrush(@RGB($FF, $FF, $00)) -Gelb----------
TextBk3& = ~CreateSolidBrush(@RGB($FF, $00, $FF)) -Magenta-------
-Erweitertes MessageHandling abschalten----------------------------
Set(FastMode, 1)
-Fenster oeffnen---------------------------------------------------
Window 0, 0 - 640, 480
-ProgramMainRoutine mit CallBack umleiten auf eigene---------------
Set(SubClassMode,1)
SubClass %hWnd, 1
-GUI aufbauen------------------------------------------------------
hButton% = @Create(Button, %hWnd, Ende, 10, 10, 100, 24)
-Textfelder------------------------------------------------------
hText1% = @Create(Text, %hWnd, Farbiger Text1, 10, 50, 110, 18)
hText2% = @Create(Text, %hWnd, Farbiger Text2, 10, 70, 110, 18)
hText3% = @Create(Text, %hWnd, Farbiger Text3, 10, 90, 110, 18)
-Dialog-Schleife---------------------------------------------------
Clear Ende%
WhileNot Ende%
WaitInput
If %Key = 2
Ende% = 1
ElseIf @Clicked(hButton%)
Ende% = 1
EndIf
EndWhile
-Fuellmuster freigeben---------------------------------------------
~DeleteObject(TextBk1&)
~DeleteObject(TextBk2&)
~DeleteObject(TextBk3&)
-Urspruengliche ProgramMainRoutine wieder herstellen---------------
SubClass %HWnd, 0
-End------------------------------------------------------------------< lass=s2>-
Fin
|
|
|
| XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 19.06.2008 ▲ |
|
|
|
|
Jac de Lad | non, je hab malheureusement je n'en sais rien. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 19.06.2008 ▲ |
|
|
|
|
Sebastian König | Detlef Jagolski
Salut, habe cela Beispiel aus qui Aider de XProfan 10 Umgebaut avec den neuen Funktionen de XProfan 11.
Hat einer une concept pourquoi cela pas Klappt?
allô Detlef,
tu as dans dem Code cela Set(WinProc,1) jeweils pour den return-Anweisungen stehen - qui Code wird alors niemals erreicht. cela Set(WinProc,0) entier am Ende ist qui richtige concept - seulement wird es là dans den relevanten Fällen, i.e. si WM_CTLCOLORSTATIC pour eines qui trois Textfelder gesendet wurde, aussi pas erreicht. Korrekt wäre un Set(WinProc,0) avant chaque return.
avec cela funktioniert es ensuite zumindest ensuite, si Du cela la fenêtre kurz aus dem sichtbaren Bereich et direct wieder hineinschiebst bzw. qui Taille des Fensters änderst. cet Verhalten entsteht meiner Auffassung pour aus dem Zusammenspiel suivant Punkte:
a) Windows sendet WM_CTLCOLORSTATIC seulement ensuite, si le Objekte récente gezeichnet volonté mussen b) qui SubClassProc wird dans XProfan seulement au cours de eines WaitInputs aufgerufen
une Solution pour cet Problem habe je malheureusement encore pas...
MfG
Sebastian |
|
|
| |
|
|
|
Andreas Miethe
| avec einem kleinen Trick allez cela déjà. Du musst Dein la fenêtre zum Neuzeichnen zwingen. KompilierenMarqueSéparation $H messages.ph
$H windows.ph
declare Text&,IsPainted&
declare ende&
declare brush&
Proc SetColor
Parameters Textcolor&,BackColor&,wParam&
If Brush&
~DeleteObject(Brush&)
Endif
Brush& = ~CreateSolidBrush(BackColor&)
~SetBkMode(wParam&, ~TRANSPARENT)
~SelectObject(wParam&,Brush&)
~SetTextColor(wParam&,Textcolor&)
return Brush&
Endproc
SubClassProc
If SubClassMessage(%hWnd, ~WM_CTLCOLORSTATIC)
Set(WinProc, 0)
Return SetColor($FF00FF,$FFFF00,&swParam)
elseIf SubClassMessage(%hwnd,~WM_TIMER)
Set(WinProc, 0)
If IsPainted& = 0
Repaint
~KillTimer(%hwnd,1)
IsPainted& = 1
Endif
EndIf
EndProc
cls
Set(SubClassMode,1)
SubClass %HWnd, 1
Text& = Createtext(%hwnd,Farbe,10,10,120,24)
~settimer(%hwnd,1,1,0)
whilenot ende&
waitinput
endwhile
Subclassing wieder ausschalten
SubClass %HWnd, 0
~DeleteObject(Brush&)
href='./../../references-fonction/XProfan/end/'>end
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 20.06.2008 ▲ |
|
|
|
|
Sebastian König | Andreas Miethe
avec einem kleinen Trick allez cela déjà. Du musst Dein la fenêtre zum Neuzeichnen zwingen. (...)
Ah, très trickreich - pas mal! |
|
|
| |
|
|
|
Detlef Jagolski | allô Andreas,
quoi soll je dire: merci
Habe maintenant Dein Beispiel sur Éditer erweitert. là habe je encore un Problem! KompilierenMarqueSéparationMESSAGES.PH
WINDOWS.PH
declare Text&,Edit&,IsPainted&
declare ende&
declare brush&
Proc SetColor
Parameters Textcolor&,BackColor&,wParam&
If Brush&
~DeleteObject(Brush&)
Endif
Brush& = ~CreateSolidBrush(BackColor&)
~SetBkMode(wParam&, ~TRANSPARENT)
~SelectObject(wParam&,Brush&)
~SetTextColor(wParam&,Textcolor&)
return Brush&
Endproc
SubClassProc
If SubClassMessage(%hWnd, ~WM_CTLCOLORSTATIC)
Set(WinProc, 0)
Return SetColor($FF00FF,$FFFF00,&swParam)
elseIf SubClassMessage(%hwnd, ~WM_CTLCOLOREDIT)
Set(WinProc, 0)
Return SetColor($FF00FF,$FFFF00,&swParam)
elseIf SubClassMessage(%hwnd,~WM_TIMER)
Set(WinProc, 0)
If IsPainted& = 0
Repaint
~KillTimer(%hwnd,1)
IsPainted& = 1
Endif
EndIf
EndProc
cls
Set(SubClassMode,1)
SubClass %HWnd, 1
Text& = Createtext(%hwnd,Farbe,10,10,120,24)
Edit& = Createedit(%hwnd,Farbe,10,60,120,24)
~settimer(%hwnd,1,1,0)
whilenot ende&
waitinput
endwhile
Subclassing wieder ausschalten
SubClass %HWnd, 0
~DeleteObject(Brush&) ass=s4 href='./../../references-fonction/XProfan/end/'>end
maintenant mon Problem, si je cela Kontextmenü ouvre ou bien si je cela Éditer avec qui souris verlasse ist qui XP Stil weg.
la hâte Du encore un Trick?
Salut
Detlef |
|
|
| XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 20.06.2008 ▲ |
|
|
|
|
Andreas Miethe
| je fürchte cela wird pas entier so simple volonté. en supplément muss on sich tiefergehend avec Themes beschäftigen.
tiens ici:
[...] |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 20.06.2008 ▲ |
|
|
|
|
Detlef Jagolski | allô Andreas,
vielen Dank.
Salut
Detlef |
|
|
| XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 20.06.2008 ▲ |
|
|
|