| |
|
|
- Seite 1 - |
|
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 |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
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 |
|
|
| |
|
|
|
| |
|
| |
|
|
| |
|
- Seite 2 - |
|
|
RGH | 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
Hallo Ralph, der erste Parameter ist ein Zeiger auf eine Struktur (= 32 Bit) und der zweite Parameter direkt die Struktur. Die Struktur POINT besteht aus zwei 32-Bit Werten für die Koordinaten und ist somit 64 Bit groß. Anstelle der Struktur können auch die zwei Koordinaten je als Longint (32 Bit) übergeben werden. Das sind dann auch wieder 64 Bit und alles ist im Lot! In XProfan ist es am Einfachsten, für den ersten Parameter eine Strukturvariable zu nutzen und für die Koordinaten zwei LongInts. Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 16.02.2007 ▲ |
|
|
|
|
RGH | Andreas Hötker
GDLAber erkläre mir bitte warum man auf einem Dialog mit waitinput nicht weiterkommt. ...an dem liegen, was Waitinput neben dem Aufrufen der API MsgWaitForMultipleObjects noch so alles tut - kann dir wohl nur Roland beantworten. Gruß Andreas
Hallo Andreas, die von Dir genannte API kommt in Waitinput überhaupt nicht vor. WAITINPUT gibt es schon seit Profan 1.0 ... und da gab es diese API-Fuktion noch gar nicht.
Für den API-FAchmann: Was passiert in WaitInput? Hier das Delphi-Listing: KompilierenMarkierenSeparieren In aller Kürze: Es werden zunächste einige globalen Flags zurückgesetzt und dann solange der MessageLoop aufgerufen, bis eines der abgefragten Ereignisse eingetreten ist. Diese globalen Flags werden von den Fensterprozeduren, teils abhängig vom jeweiligen Stil, gesetzt. Auch wenn es diese Funktionalität schon seit Version 1 gibt, wurde sie doch im Laufe der Zeit verbessert und verfeinert, zuletzt in Version 10.
API-Aufrufe gibt es natürlich in MessageLoop: KompilierenMarkierenSeparieren (Die erste Zeile hinter dem Begin diente dazu, F1 in Editfeldern abzufragen, bevor es mit Version 10 die Hotkeys gab. Sie dient, wie vieles andere, lediglich der Kompatibilität zu früheren Versionen.)
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 16.02.2007 ▲ |
|
|
|
|
| Mmh, einfach eine Schleife also. Besten Dank. |
|
|
| |
|
|
|
Ralph Theobald | Hallo Roland ,hallo If
Danke für eure Mühe.
The PtInRect function determines whether the specified point lies within the specified rectangle. A point is within a rectangle if it lies on the left or top side or is within all four sides. A point on the right or bottom side is considered outside the rectangle.
BOOL PtInRect(
CONST RECT *lprc,// address of structure with rectangle POINT pt // structure with point ); Parameters
lprc
Points to a RECT structure that contains the specified rectangle.
pt
Specifies a POINT structure that contains the specified point.
Return Value
If the specified point lies within the rectangle, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError.
Der Aufruf PtInRect(rect#,point#) funktioniert nicht, war wohl ein Verständnisproblem meinerseits. Ich dachte der Zugriff auf die Strukturelemente erfolgt immer über die Adresse.
Gruß Ralph |
|
|
| |
|
|
|
Frank Abbing | Mach dir nix daraus, Ralph. Bin auch schonmal darüber gestolpert . |
|
|
| |
|
|