| |
|
|
Stephan Sonneborn | Hallo (X)Profan-Freunde,
erstmal ein herzliches Hallo! an alle XProfaner hier in der Community! Nachdem ich in den letzten Jahren kaum zum programmieren gekommen bin (Hausumbau), hoffe ich, jetzt wieder öfters ein paar Zeilen zu schreiben.
Da ich die 10er XProfan - Version komplett verpasst habe, versuche ich, mir die neuen Funktionen der 11er zu erschließen.
In einem alten Projekt hatte ich die thread.pcu von iF verbaut, die mir auch gute Dienste geleistet hat. Nun stelle ich fest, dass beim Neukompilieren, nicht mehr alles so läuft wie gewohnt. Ich habe zunächst CLICKED() im Verdacht gehabt, bin aber davon schon wieder abgerückt: es ist z.B. besser, jedem mit CONTROL() erstellten Objekt ein eigene ID zu geben...
Die Thread.pcu hat mir die Uhrzeit in der Statuszeile angezeigt. Nun lese ich, dass die Thread.pcu bei XProfan nicht unbdingt die beste Wahl sei. Kann mir bitte mal jemand auf die Sprünge helfen? Vielen Dank! |
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 11.11.2009 ▲ |
|
|
|
|
| Leider kann die Thread.Pcu in aktueller XProfan-Version nicht fehlerfrei funktionieren, aber das muss sie auch nicht denn es gibt die SubClassProc um innerhalb von Waitinput Code auszuführen z.B. per SetTimer-API: [...]
Wenn die obig emulierten Timer nicht reichen (und ich meine für Statusbaränderung tun sie das ^^), dann kann man auch mit nativen Funktionen herumspielen: [...] womit es dann wiederum keine procaddr-Probleme gibt. Ein Timerbeispiel klebt hier ganz unten dran: [...]
Juhu Stephan ist zurück! |
|
|
| |
|
|
|
Stephan Sonneborn | Hi iF,
Danke für Deine schnelle Antwort. Ich werde mir den Code am Sonntag mal näher ansehen! Bis denne... |
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 13.11.2009 ▲ |
|
|
|
|
Stephan Sonneborn | Hallo David,
so... ganz verstanden habe ich Dein SetTimer.Prf nicht. Und gewundert, was ich angeblich alles noch nachladen soll und dann im XPSE-Verzeichnis zu liegen hat, hats mich auch...
Deswegen in reinem XPROFAN 11: KompilierenMarkierenSeparieren************************************************************************************************
* SETTIMER DEMO mit CHECKBUTTON *
* Quellcode stammt überwiegend aus der Hilfe zu XPROFAN 11 *
************************************************************************************************
$H Messages.ph
$H Windows.ph
************************************************************************************************
* Funktionen *
************************************************************************************************
Control-ID Generator:
PROC NewID
DECLARE ID&
LastDlgID& = LastDlgID& + 1
ID& = LastDlgID&
RETURN ID&
ENDPROC
Control-Dialogobjekt CHECKBUTTON
DEF CreateXButton(6)CONTROL("BUTTON",@$(2),$54011009,@%(3),@%(4),@%(5),@%(6),@%(1),NewID(), %HInstance, $0000)
************************************************************************************************
* SubClassing *
************************************************************************************************
SubClassProc
IF SubClassMessage(%hWnd, ~wm_sizing)
SetStyle %hwnd, 1, GetStyle(%hwnd, 1) | $02000000
Resize
Set("WinProc", 0)
ElseIf SubClassMessage(bt1&, ~wm_rbuttondown)
SetText bt1&, "Autsch!"
Set("WinProc", 0)
ElseIf SubClassMessage(bt1&, ~wm_rbuttonup)
SetText bt1&, "Test1"
SetMenuItem 3000
Set("WinProc", 0)
ElseIf SubClassMessage(st&, ~wm_mousemove)
SetMenuItem 3001
Set("WinProc", 0)
ElseIf SubClassMessage(%hwnd, ~wm_close)
SetMenuItem 3999
Set("WinProc", 0)
ElseIf SubClassMessage(%hwnd, ~wm_timer)
SetMenuItem 9999
Set("WinProc", 0)
EndIf
ENDPROC
************************************************************************************************
************************************************************************************************
* Fesntergröße einstellen *
************************************************************************************************
Proc Resize
SetWindowPos bt& = 0, 50 - Width(%HWnd)/2, Height(%HWnd) - 75
SetWindowPos bt2& = Width(%HWnd)/2, 50 - Width(%HWnd)/2, Height(%HWnd) - 75
SetWindowPos st& = 0, 0 - 0,0; 0
SetWindowPos tb& = 0, 0 - 0,0; 0
ENDPROC
************************************************************************************************
************************************************************************************************
* Globale Variablen *
************************************************************************************************
DECLARE LastDlgID&
DECLARE bt1&, bt2&, st&, tb&
DECLARE Ende%
************************************************************************************************
* Hauptprpgramm *
************************************************************************************************
Wertzuweisungen
LastDlgID& = 10000 Startwert für Control-ID
Hauptfenster und Dialogobjekte erstellen
CLS
st& = CREATE ("StatusWindow", %HWnd, "Statuszeile")
tb& = CREATE ("Toolbar" , %HWnd, 0, 15, 1, 1000,1)
bt1& = CREATEXBUTTON( %HWnd, "Test1", 0, 50, Width(%HWnd)/2, Height(%HWnd) - 75)
bt2& = CREATE ("Button" , %HWnd, "Test2", Width(%HWnd)/2, 50, Width(%HWnd)/2, Height(%HWnd) - 75)
SubClassing einschalten
SubClass %HWnd, 1 SubClassing des Hauptfensters einschalten
SubClass bt1&, 1 SubClassing des 1. Buttons einschalten
SubClass st&, 1 SubClassing der Statuszeile einschalten
Timer setzen:
SetTimer 500
Hauptschleife
WHILENOT Ende%
WAITINPUT
Ereignisauswertung:
IF %Key = 4
Resize
SetStyle %hwnd, 1, GetStyle(%hwnd, 1) - $02000000
ELSEIF MenuItem(3000)
MessageBox("Rechtsklick auf Button 1!","Test",0)
ELSEIF MenuItem(3001)
MessageBox("Mausbewegung über Statuszeile!","Test",0)
ELSEIF MenuItem(3002)
MessageBox("wm_activate","Test",0)
ELSIF MenuItem(3003)
MessageBox("wm_syscommand",str$(&sWParam),0)
ELSEIF MenuItem(3999)
Case Messagebox("Wollen Sie das Programm wirklich verlassen?","Frage",36) = 6 : Ende% = 1
ELSEIF MenuItem(9999)
SetText st&, TIME$(0) + ":" + LEFT$(TIME$(1),2)
ENDIF
ENDWHILE
SubClassing ausschalten
SubClass %HWnd, 0
SubClass bt1& , 0
SubClass st& , 0
Timer löschen:
KillTimer
Programmende
END
Einen schönen Programmier-Sonntag an alle! |
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 15.11.2009 ▲ |
|
|
|
|
| Du hast den reinen Profantext [...] übersehen, bis denne.
Und gewundert, was ich angeblich alles noch nachladen soll und dann im XPSE-Verzeichnis zu liegen hat, hats mich auch...
Tut mir leid! |
|
|
| |
|
|
|
Stephan Sonneborn |
iF: Du hast den reinen Profantext [...] übersehen
Ooops, das hab ich wohl...
Tut mir leid!
Nicht schlimm...
Wozu sind die Zusatz-Proggis denn gedacht? |
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 15.11.2009 ▲ |
|
|
|