I want to do something on the press of a button using the mouse and something else when the button is released. Without subclassing, and based on some other things in previous threads I've read here, is this a legitimate way of doing that? Am I setting myself up for some unforeseen problem? Thx, Conrad
Code:
#COMPILE EXE #DIM ALL #INCLUDE ONCE "WIN32API.INC" %IDD_DIALOG1 = 101 %IDC_BUTTON1 = 1001 %IDC_TEXTBOX1 = 1002 %IDC_LABEL1 = 1003 'Main Application Entry FUNCTION PBMAIN() ShowDIALOG1 %HWND_DESKTOP END FUNCTION 'Callback CALLBACK FUNCTION ShowDIALOG1Proc() LOCAL MyButton AS LONG SELECT CASE AS LONG CB.MSG CASE %WM_INITDIALOG 'Initialization handler- nothing here CASE %WM_NCACTIVATE STATIC hWndSaveFocus AS DWORD IF ISFALSE CB.WPARAM THEN ' Save control focus hWndSaveFocus = GetFocus() ELSEIF hWndSaveFocus THEN ' Restore control focus SetFocus(hWndSaveFocus) hWndSaveFocus = 0 END IF CASE %WM_SETCURSOR MyButton = GetDlgCtrlId(CB.WPARAM) SELECT CASE MyButton CASE %IDC_BUTTON1 SELECT CASE HI(INTEGER, CB.LPARAM) CASE %WM_LBUTTONDOWN '&H201 'do thing A here when the mouse button is depressed CONTROL SET TEXT CB.HNDL, %IDC_TEXTBOX1, "Button 1 Down!" : MESSAGEBEEP(&hFFFFFFFF) END SELECT END SELECT CASE %WM_COMMAND SELECT CASE AS LONG CB.CTL CASE %IDC_BUTTON1 IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN 'do thing B here when the mouse button is released CONTROL SET TEXT CB.HNDL, %IDC_TEXTBOX1, "Button 1 Up!" : MESSAGEBEEP(&hFFFFFFFF) END IF END SELECT END SELECT END FUNCTION 'Dialog FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG LOCAL lRslt AS LONG LOCAL hDlg AS DWORD DIALOG NEW hParent, "Button Down Test", 167, 152, 257, 150, %WS_POPUP OR _ %WS_BORDER OR %WS_DLGFRAME OR %WS_SYSMENU OR %WS_CLIPSIBLINGS OR _ %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR %DS_NOFAILCREATE OR _ %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR _ %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hDlg CONTROL ADD BUTTON, hDlg, %IDC_BUTTON1, "Button1", 80, 20, 95, 30 CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX1, "TextBox1", 55, 90, 120, 30 DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt FUNCTION = lRslt END FUNCTION
Comment