I need to make a floating toolbar (actually a dialog with buttons) as small as possible, yet moveable. Can anyone suggest a way to make it moveable *without* the Caption bar?
Many TIA
William Fletcher
Many TIA

William Fletcher
GLOBAL ghDlg AS LONG '---------------------------------------------------- CALLBACK FUNCTION DlgProc () AS LONG SELECT CASE CBMSG ' CASE %WM_NCHITTEST ' FUNCTION = %HTCAPTION ' ---> no effect at all ' CALL SendMessage(ghDlg, %WM_SYSCOMMAND, %SC_MOVE, 0) ' ---> constant "Move" cursor ' CALL SendMessage(ghDlg, %WM_SYSCOMMAND, %HTCAPTION, 0) ' ---> no effect, it seems ' CASE %WM_LBUTTONDOWN ' ReleaseCapture ' CALL SendMessage(ghDlg, %WM_SYSCOMMAND, %SC_MOVE, 0) ' ---> "Move" cursor appears but Dialog doesn't move CASE %WM_LBUTTONDOWN SendMessage ghDlg, %WM_NCLBUTTONDOWN, %HTCAPTION, BYVAL %NULL ' ---> THIS WORKS! (...thanks Chris) END SELECT END FUNCTION 'DlgProc '---------------------------------------------------- FUNCTION PBMAIN () AS LONG LOCAL Style AS LONG Style = %WS_POPUP OR _ %DS_SETFONT OR _ %DS_NOFAILCREATE OR _ %DS_MODALFRAME OR _ %DS_3DLOOK DIALOG NEW 0,"",,,160,50,Style TO ghDlg DIALOG SHOW MODAL ghDlg, CALL DlgProc END FUNCTION 'PBMAIN '----------------------------------------------------
CALLBACK FUNCTION DlgProc () AS LONG SELECT CASE CBCTL CASE %ID_OK_BUTTON DIALOG END ghDlg, 1 END SELECT SELECT CASE CBMSG CASE %WM_CREATE CASE %WM_NCHITTEST FUNCTION = %HTCAPTION EXIT FUNCTION END SELECT END FUNCTION 'DlgProc
#COMPILE EXE #INCLUDE "win32api.INC" GLOBAL oldproc AS LONG CALLBACK FUNCTION DlgProc IF CBMSG = %WM_COMMAND AND CBCTL = %IDOK THEN DIALOG END CBHNDL IF CBMSG = %WM_DESTROY THEN SetWindowLong CBHNDL, %GWL_WNDPROC, oldproc END FUNCTION CALLBACK FUNCTION subclass IF CBMSG = %WM_NCHITTEST THEN FUNCTION = %HTCAPTION ELSE FUNCTION = CallWindowProc(oldproc, CBHNDL, CBMSG, CBWPARAM, CBLPARAM) END IF END FUNCTION FUNCTION PBMAIN DIALOG NEW 0, "HTCAPTION test", , , 100, 200, %WS_BORDER TO hDlg& CONTROL ADD BUTTON, hDlg&, %IDOK, "&Quit", 30, 90, 40, 14 OldProc = SetWindowLong(hDlg&, %GWL_WNDPROC, CODEPTR(subclass)) DIALOG SHOW MODAL hDlg&, CALL DlgProc END FUNCTION
SELECT CASE CBMSG CASE %WM_LBUTTONDOWN SendMessage ghDlg, %WM_NCLBUTTONDOWN, %HTCAPTION, BYVAL %NULL END SELECT
We process personal data about users of our site, through the use of cookies and other technologies, to deliver our services, and to analyze site activity. For additional details, refer to our Privacy Policy.
By clicking "I AGREE" below, you agree to our Privacy Policy and our personal data processing and cookie practices as described therein. You also acknowledge that this forum may be hosted outside your country and you consent to the collection, storage, and processing of your data in the country where this forum is hosted.
Comment