| |
|
|
GDL | Hallo,
ist es möglich, dass sich ein so erzeugtes Fenster
ofenster&=create(window,%hwnd,Oberflächengestaltung,0,0,%maxx,%maxy)
genauso verhält wie ein %hwnd,quasi ein 2tes Hauptfenster.
Servus Georg |
|
|
| |
|
|
|
Nico Madysa | Soweit ich weiß, ja, da es ja mit WindowStyle einstellen kannst. Nur die Systemvariablen wie %WinLeft, %WinTop, %cyCaption funktionieren bei ofenster& natürlich nicht. |
|
|
| |
|
|
|
GDL | Hallo Nico,
ich probierte schon fast alle Windowstyles, aber mit nichts gehen %mousekey, %mousex ,%mousey und die inc mouseouver von hier.
Servus Georg |
|
|
| |
|
|
|
Nico Madysa | Hä??? Das find ich jetzt überraschend, dass die Systemvaiablen nur vom Hauptfenster gesetzt werden. Jetzt ist hier aber jemand eine Erklärung schuldig! |
|
|
| |
|
|
|
| [quote:0e8477876a=GDL]Hallo Nico,
ich probierte schon fast alle Windowstyles, aber mit nichts gehen %mousekey, %mousex ,%mousey und die inc mouseouver von hier.
Servus Georg[/quote:0e8477876a] Hallo Georg...
Dafür gibts die APIs GetCursorPos und ScreenToClient.
Gruß
Andreas |
|
|
| |
|
|
|
GDL | Hallo Andreas,
ich bekomme es auf einem Unterfenster nicht hin. Auf %hwnd klappts aber einwandfrei. KompilierenMarkierenSeparierenDef PtInRect(3) !"USER32","PtInRect"
Proc CheckMouse
Parameters hw&,x%,y%,lang&[onummer&],breit&[onummer&]
Dim rect#,16
Dim rectpt#,8
Long rect#,0=x%
Long rect#,4=y%
Long rect#,8=lang&[onummer&]
Long rect#,12=breit&[onummer&]
GetCursorPos(rectpt#)
ScreenToClient(hw&,rectpt#)
If Neq(PtInRect(rect#,Long(rectpt#,0),Long(rectpt#,4)),0)
result%=1
EndIf
Dispose rect#
Dispose rectpt#
EndProc
Servus Georg |
|
|
| |
|
|
|
| Hallo Georg...
...ist noch nicht ganz perfekt... KompilierenMarkierenSeparierenDef @GetCursorPos(1) !"USER32","GetCursorPos"
Def @ScreenToClient(2) !"USER32","ScreenToClient"
Def @Ptinrect(3) !"USER32","PtInRect"
Def @WaitMessage(0) !"USER32","WaitMessage"
Declare Rect#,Rectpt#,Dialog&,Message#
Windowstyle 31
LET Dialog&=@CreateWindow(%Desktop,"Mausklick auf Dialog",30,30,300,300)
Usecursor 0
While %Menuitem<>-2
@WaitMessage()
Startpaint Dialog&
Rectangle 30,30-60,60
Endpaint
IF @Checkmouse(Dialog&,30,30,60,60)=1
IF %Message=514
@messagebox("Mit linker Maustaste ins schwarze getroffen!","Treffer!",64)
endif
endif
Usecursor 0
wend
Proc Checkmouse
Parameters Hw&,X%,Y%,Lang&,Breit&
Declare Result&
Dim Rect#,16
Dim Rectpt#,8
Long Rect#,0=X%
Long Rect#,4=Y%
Long Rect#,8=Lang&
Long Rect#,12=Breit&
@Getcursorpos(Rectpt#)
@Screentoclient(Hw&,Rectpt#)
LET Result&=@Ptinrect(Rect#,@long(Rectpt#,0),@long(Rectpt#,4))
Dispose Rect#
Dispose Rectpt#
Return Result&
Endproc
|
|
|
| |
|
|
|
GDL | @Andreasanke.
Aber erkläre mir bitte warum man auf einem Dialog mit waitinput nicht weiterkommt.Oder sollte man waitinput nur in Ausnahmefällen nutzen?
Servus Georg |
|
|
| |
|
|
|
| [quote:10c8e47fce=GDL]Aber erkläre mir bitte warum man auf einem Dialog mit waitinput nicht weiterkommt.[/quote:10c8e47fce] ...an dem liegen, was Waitinput neben dem Aufrufen der API MsgWaitForMultipleObjects noch so alles tut - kann dir wohl nur Roland beantworten.
Gruß
Andreas |
|
|
| |
|
|
|
GDL | @ Andreas,
klappt wunderbar für Einklickabfrage.Für ständige Abfrage nehm ich wie bereits früher schonmal gehabt.
@Getasynckeystate(2)<>0.
Da @Getasynckeystate(2)<>0 mit waitinput nicht geht und ich auch Buttons abfragen möchte verwendete ich
settimer 1 waitinput killtimer
Verstehe zwar nicht warum es dann geht, aber hauptsache es geht.
Servus Georg |
|
|
| |
|
|
|
Ralph Theobald | Hallo ,
kann mir jemand erklären, wie ihr rausgefunden habt, daß die Api Funktion PTINRECT drei Parameter hat.
Thomas Hölzer hat in Prffellow ( Dlgcheckarea) einen ähnlichen Code benutzt. In der Win32 und im SDK steht PTinRect mit zwei Parametern: 1. Struktur : Rechteckkoordinaten Fenster 2. Struktur: Mauskoordinaten Oder habe ich was übersehen ?
Gruß Ralph |
|
|
| |
|
|
|
| |
|
| |
|
|