Deutsch
Forum

Dialogfenster wie %hwnd

 
- 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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
03.10.2006  
 



 
- Seite 1 -



GDL
Hallo Andreas,

ich bekomme es auf einem Unterfenster nicht hin. Auf %hwnd klappts aber einwandfrei.
KompilierenMarkierenSeparieren
Def 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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
05.10.2006  
 



Hallo Georg...

...ist noch nicht ganz perfekt...
KompilierenMarkierenSeparieren
Def @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

 
06.10.2006  
 




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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
06.10.2006  
 



[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
 
07.10.2006  
 




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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
08.10.2006  
 




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

3 kB
Hochgeladen:16.02.2007
Ladeanzahl88
Herunterladen
 
Xprofan 10 , AMD Athlon 3000+, 1GB
16.02.2007  
 



[...] 
 
16.02.2007  
 



 
- 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
GDL
Aber 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.
 
16.02.2007  
 




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
 
Xprofan 10 , AMD Athlon 3000+, 1GB
17.02.2007  
 




Frank
Abbing
Mach dir nix daraus, Ralph. Bin auch schonmal darüber gestolpert .
 
17.02.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.813 Betrachtungen

Unbenanntvor 0 min.
Thomas Freier08.02.2024
H.Brill20.05.2023
RudiB.15.04.2022
AndreasS01.12.2018
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie