| |
|
|
GDL | Hi,
bin Profanneuling und probiere mit %wmnotify.Was mache ich im folgendem Code falsch, da %wmnotify immer null(also nicht gesetzt) ist. KompilierenMarkierenSeparierendeclare 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 gehts 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üßen Georg |
|
|
| |
|
|
|
Rolf Koch | 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, daß ein Dialogelement mit bestimmten Ereignissen vorausgestattet sein muss.
Wie geschrieben: Man möge mich verbessern, falls ich irgendeinen Quatsch hier labbere :biggrin:
Rolf |
|
|
| |
|
|
|
GDL | Hi Rolf
Ich hoffe es klappt jetzt.
Wenn ich das &(kaufmän. und) hier im Textfeld eintippe und auf Vorschau gehe klappts. Sobald ich aber irgendwas aus der Zwischenablage hier ins 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üßen Georg |
|
|
| |
|
|
|
| Hallo Georg...
Warum nimmst du keine 3-Status Stalter??? KompilierenMarkierenSeparierenWINDOWSTYLE 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
Das würde auch dem Windowsstandart entsprechen. |
|
|
| |
|
|
|
GDL | 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üßen Georg |
|
|
| |
|
|
|
| Hallo Georg...
Eine Checkbox ist nichts anders als ein Button mit einem bestimmten Stil (für die Groupbox gilt das übrigens auch). KompilierenMarkierenSeparierenWINDOWSTYLE 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
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 | Hallo Andreas,
Mach ich glatt,möchte doch wissen wie die API genutzt werden kann.
Mit freundlichen Grüßen Georg |
|
|
| |
|
|
|
| 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. |
|
|
| |
|
|