Autor | Thema: Fenstergrößenänderung feststellen | | Datum:24.02.02 21:05 
| |
Guten Tag.
Mein Programm soll permanent feststellen, ob der Anwender gerade dabei ist, mein Hauptfenster in der Größe zu verändern.
Wie geht das denn?
Im Augenblick kann ich nur feststellen, ob die Fenstergröße sich verändert hat, aber nicht, ob der Anwender gerade dabei ist.
Ich wäre für Hilfe dankbar.
Schönen Abend
|
| | Datum:24.02.02 23:50 
(uwe.beisler@t-online.de) | |
Hallo,
im Prinzip kannst Du fast alles Mitkriegen.
Es ist nur eine Frage des Aufwands. Wenn Du mit GetMessage
an stelle von WaitKey arbeitest hast du das gleiche Problem wie im Internet - nicht in Informationen zu ertrinken oder auch nur die Spreu vom Weizen zu trennen. Den Windows ist sehr Message-intensiv. Für die wichtigsten Messages kannst Du mit %UMessage abrbeiten. Unten habe ich Dir einen kleinen Prog.-Ausschnitt um das Prinzip zu zeigen (sorry wenn ich Dir jetzt keine fertige Lösung präsentiere - stecke selbst noch in den Anfängerschuhen).
Ich glaube wenn Du WM-COMMAND und WM_SYSCOMMAND (siehe Win32.hlp - gibts im Internet einfach z.B. über google.de suchen) überwachst kommst Du hin. Du kannst natürlich auch Maus und Tastatur direkt überwachen (WM_ steht für Fenster) aber das wird gleich viel aufwendiger, weil eine Notify-Message z.B. NM_CLICK allein noch nicht viel sagt mußt Du auch wissen wohin geklickt wurde.
Es ist viel einfache auf eine entsprechnde Nachricht vom Fenter zu warten.
declare Hit#
struct Hit=X&,Y&,Flags&,Item&
dim Hit#,Hit
declare NMHDR#
struct NMHDR = hwndFrom&,idFrom&,code&
dim NMHDR#,NMHDR
...
GetMessage
Message%=%Message '***
LParam&=&LParam
Hit#.x&=%MOUSEX
Hit#.y&=%MOUSEY
NotifyCode%=%NotifyCode
' NM_OUTOFMEMORY = -1
' NM_CLICK = -2
' NM_DBLCLK = -3
' NM_RETURN = -4
' NM_RCLICK = -5
' NM_RDBLCLK = -6
' NM_SETFOCUS = -7
' NM_KILLFOCUS = -8
' NM_STARTWAIT = -9
' NM_ENDWAIT = -10
' NM_BTNCLK = -10
if equ(%GetFocus,TreeView&)
Hit_item& = sendmessage(TreeView&,4369,0,Hit#)'--TVM_HITTEST
if equ(Message%,78)
NMHDR#=LParam&
...
EndIF
case %umessage=16:break '------Fenster schließen
IF MenuItem(101)
TreeExpand(TreeView&,Root&[0])
TreeExpand(TreeView&,Root&[2])
ElseIF MenuItem(102)
TreeColapse(TreeView&,Root&[0])
TreeColapse(TreeView&,Root&[2])
ElseIF MenuItem(103)
_ende% = 1
EndIF
EndWhile
Es ist zwar um einiges Aufwendiger so zu arbeiten, es bringt aber eben auch viel mehr Möglichkeiten. Der Code passt nicht ganz zu Deinem Problem sondern zeigt nur das Prinzip.
Gruß
Uwe
P.S.
*** hier werden die Werte übrigens gesichert, da die sich ja während Deiner Auswertung und Verarbeitung ändern können
|
| | Datum: 25.02.02 13:06 
| |
Guten Tag.
Geht das denn nicht ohne eine eigene Message Programmierung aufzubauen? Diese Technik beinhaltet doch mehrere Nachteile.
Kennt niemand die geeignete Message für das oben beschriebene Problem?
Schönen Tag
|
|
|