GDL, 29.11.2004 19:09: Hi,
bin Profanneuling und probiere mit %wmnotify.Was mache ich im folgendem Code falsch,
da %wmnotify immer null(also nicht gesetzt) ist.
declare ende&,ende%,test&,wer&,wert&
windowstyle 520
'windowstyle 31 geht auch nicht
cls
ende&=createbutton(%hwnd,"Ende",100,50,50,20)
test&=createbutton(%hwnd,"Test",100,80,50,20)
proc abfrage
If %wmnotify
Let wer&=¬ifywnd
Let wert&=%notifycode
drawtext 200,150,wer&
drawtext 200,150,wert&
Else
Let wer&=0
Let wert&=0
EndIf
drawtext 200,200,wer&
drawtext 200,230,wert&
drawtext 200,250,%wmnotify
endproc
clear ende%
whilenot ende%
waitinput
'mit getmessage geht's auch nicht
abfrage
if %key=2
let ende%=1
elseif getfocus(ende&)
let ende%=1
endif
drawtext 200,200, ¬ifywnd
wend
end
vielen Dank für eure Hilfe und mit freundlichen Grüssen
Georg
Rolf Koch, 29.11.2004 19:15: Hi Georg,
zuerstmal:
¬ifywnd was ist denn das? Die Variable am Anfang ist mir noch nie über den Weg gekommen. Oder sollte es &NotifyWnd lauten?
Dann (man möge mich verbessern), nutzt es Dir garnichts Buttons u.s.w nach %Wmnotify abzufragen, da diese Teile überhaupt keine %Wmnotify senden, ausser diese besitzen einen Tooltip (glaub ich zumindest). Aber so tief hab ich mich auch noch nicht mit dem Thema beschäftigt.
Bedeutet also, dass ein Dialogelement mit bestimmten Ereignissen vorausgestattet sein muss.
Wie geschrieben: Man möge mich verbessern, falls ich irgendeinen Quatsch hier labbere :biggrin:
Rolf
GDL, 29.11.2004 20:17: Hi Rolf
Ich hoffe es klappt jetzt.
Wenn ich das &(kaufmän. und) hier im Textfeld eintippe und auf Vorschau gehe klappt's.
Sobald ich aber irgendwas aus der Zwischenablage hier in's Textfeld kopiere werden alle
&(kaufmän.und) die am Wortanfang oder allein stehen nur abgeändert übernommen.
Wörter die mit & enden aber nicht.Komisch.
Grund meiner Frage ist,dass ich Buttons mit drei Funktionen(linke bzw.rechte Maustaste
oder Doppelklick) ausstatten möchte.
Mit freundlichen Grüssen
Georg
Beitrag, 30.11.2004 20:50: Hallo Georg...
Warum nimmst du keine 3-Status Stalter???
[code:1:30afe80bed]
WINDOWSTYLE 31
WINDOWTITLE "Button als Schalter"
WINDOW 0,0-640,440
Declare Schalter&
LET Schalter&=@Control("Button","Zustand 0",$40000000+$10000000+$400000+$1000+6,20,20,300,30,%HWND,2112,%HINSTANCE)
while 0=0
Drawtext 0,0,@str$(@GetCheck(Schalter&))+" "
Waitinput
Drawtext 0,0,@str$(@GetCheck(Schalter&))+" "
Settext Schalter&,"Zustand "+@str$(@GetCheck(Schalter&))
wend
[/code:1:30afe80bed]
Das würde auch dem Windowsstandart entsprechen.
GDL, 30.11.2004 21:52: Hallo Andreas,
bin nicht nur Profanneuling,sondern habe auch unter Windows mit Hilfe der API noch nichts
programiert.Werde natürlich dort auch hineinschnuppern,was aber nicht so leicht sein dürfte,da meine Englischkenntnise seit fast 30 Jahren nicht mehr gebraucht wurden.
Dein Beispiel geht einwandfrei,nur mit getcheck(N) komme ich nicht ganz klar.
In der Profanhilfe steht unter getcheck(N):
@GetCheck(N)
N : LongInt - Handle des Fensterobjektes
Ergebnis : Integer - Zustand: 0=nicht aktiviert / 1=aktiviert
Die Funktion gibt den Zustand der Checkbox bzw. des Radiobuttons mit dem Handle N zurück:
0 - Checkbox/Radiobutton ist nicht aktiviert
1 - Checkbox/Radiobutton ist aktiviert
Siehe auch: SetCheck
Nun
wieso geht bei dir getcheck(N) auch mit einem normalen Button?
warum hat getcheck(N) auf einmal 3 Zustände?
Da ich bis jetzt noch nicht alle Stylewerte entziffert habe,nehme ich mal an,dass es damit
zusammenhängt.
Wenn nicht,erkläre es mir bitte,da ich mich in die Profanprogr. vertiefen möchte.
Nochmals Danke für den Tipp und mit freundlichen Grüssen
Georg
Beitrag, 30.11.2004 23:48: Hallo Georg...
Eine Checkbox ist nichts anders als ein Button mit einem bestimmten Stil (für die Groupbox gilt das übrigens auch).
[code:1:27f8652915]
WINDOWSTYLE 31
WINDOWTITLE "Drei-Status Checkbox"
WINDOW 0,0-640,440
Declare Checkbox&
LET Checkbox&=@Control("Button","Dies ist ein Test",$40000000+$10000000+6,20,20,300,30,%HWND,2112,%HINSTANCE)
while 0=0
Drawtext 0,0,@str$(@GetCheck(Checkbox&))+" "
wend
[/code:1:27f8652915]
Sollte du mal Interesse haben, dich um die API zu kümmern, schau dir die Seite von Uwe "Pascal" Niemeier an. Dort findest du die einfachsten und besten Hilfedateien über die Windows API, die ich jemals gesehen habe - alles in deutsch!
Spitzenarbeit!!!
GDL, 01.12.2004 00:07: Hallo Andreas,
Mach ich glatt,möchte doch wissen wie die "API" genutzt werden kann.
Mit freundlichen Grüssen
Georg
Beitrag, 11.07.2005 11:25: Weil ich es selber grad genauer wissen wollte und dann diesen Beitrag gefunden habe, hier noch zur Ergänzung:
WM_NOTIFY Nachrichten senden nur Controls aus der COMCTL32.DLL, also Treeview, Listview...
Normale Controls senden WM_COMMAND Nachrichten. DA WM_COMMAND vom Messagehandling von Profan verwaltet wird (setzt u.a. %MENUITEM), wird ein vernünftiges Abfangen dieser Message wohl nur über USERMESSAGES funktionieren. Dabei steht dann in &ULPARAM das Handle des Controls und in &UWPARAM eine Kombination aus der ID des Controls (quasi %MENUITEM) und Notifigaction Code (z.B. 'LBN_DBLCLK'=2 für einen Doppelklick in eine Listbox). In den oberen zwei Bytes von &UWPARAM steht der Notification Code, in den unteren zwei Bytes die ID.
Ein abfangen dieser Message über USERMESSAGES wirkt sich erheblich auf das Programm aus, da u.a. %MENUITEM nicht mehr gesetzt wird.
Dies ist die Offlinevariante vom Thread [%wmnotify Abfrage].
©2006 XProfan.Com