If you ever need to know when the mouse has left your dialog then this could be of use to you. No need for %WM_MOUSEMOVE or %WM_MOUSELEAVE.
Code:
#COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" FUNCTION PBMAIN () AS LONG LOCAL Count AS LONG LOCAL hDlg AS LONG DIALOG NEW 0,"Mouse TRAP",50,50,148,150,%ws_sysmenu,TO hDlg& CONTROL ADD LABEL,hDlg&,302,"%WM_MOUSEMOVE x=0;y=0",10,110,130,10 CONTROL ADD TEXTBOX,hDlg&,501,"Sample",10,40,70,12 CONTROL ADD BUTTON,hDlg&,500,"Button",10,70,70,15 DIALOG SHOW MODELESS hDlg&,CALL DlgCallBack DO DIALOG DOEVENTS TO Count LOOP WHILE Count AND IsWindow(hDlg) END FUNCTION CALLBACK FUNCTION DlgCallBack LOCAL gpt AS POINTAPI LOCAL xCnt AS LONG LOCAL yCnt AS LONG LOCAL dlgx AS LONG LOCAL dlgy AS LONG LOCAL mx AS LONG LOCAL my AS LONG SetTimer CBHNDL,1000,100,BYVAL %NULL SELECT CASE AS LONG CBMSG CASE %WM_TIMER IF CBWPARAM=1000 THEN GetCursorPos gPt mx = gPt.x my = gPt.y CONTROL SET TEXT CBHNDL,302,"Mouse Location x="+FORMAT$(mx)+"; y="+FORMAT$(my) DIALOG GET LOC CBHNDL TO dlgx&, dlgy& DIALOG UNITS CBHNDL, dlgx, dlgy TO PIXELS dlgx, dlgy DIALOG GET SIZE CBHNDL TO xCnt&, yCnt& DIALOG UNITS CBHNDL, xCnt, yCnt TO PIXELS xCnt, yCnt IF mx > dlgx - 1 AND mx < dlgx + xCnt AND my > dlgy - 1 AND my < dlgy + yCnt THEN PostMessage CBHNDL, %WM_APP, 0, 0 ELSE PostMessage CBHNDL, %WM_APP + 1, 0, 0 END IF END IF CASE %WM_APP SetWindowText CBHNDL, "Dialog - on dialog" CASE %WM_APP + 1 SetWindowText CBHNDL, "Dialog - off dialog" END SELECT END FUNCTION
Code:
DIALOG GET LOC CBHNDL TO dlgx&, dlgy& DIALOG UNITS CBHNDL, dlgx, dlgy TO PIXELS dlgx, dlgy
Code:
GetWindowRect hDlgAddr, rc 'gets the dialog start x and y points dlgx = rc.nLeft dlgy = rc.nTop
Since the aforementioned DDT code does not work with SDK. Plus add this to the locals
LOCAL rc AS RECT
to get the correct location for your dialogs upper left corner.
and even though the following works with SDK:
Code:
DIALOG GET SIZE CBHNDL TO xCnt&, yCnt& DIALOG UNITS CBHNDL, xCnt, yCnt TO PIXELS xCnt, yCnt
Code:
xCnt = rc.nRight - rc.nLeft yCnt = rc.nBottom - rc.nTop
enjoy