Either I'm missing something or that's been the behavior all along and I never noticed. No matter how I create a button, that is, a "normal" button which one expects to be pushable and will return to the "popped out" state, when I push one, it develops a black rectangle around the button which does not go away until you push it again. Or push another button. Buttons 3 & 5 below ARE %BS_PUSHLIKE, the rest are not.
Code:
#PBFORMS CREATED V1.51 #COMPILE EXE #DIM ALL '------------------------------------------------------------------------------ ' ** Includes ** '------------------------------------------------------------------------------ #PBFORMS BEGIN INCLUDES #RESOURCE "buttons.pbr" #IF NOT %DEF(%WINAPI) #INCLUDE "WIN32API.INC" #ENDIF #PBFORMS END INCLUDES '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Constants ** '------------------------------------------------------------------------------ #PBFORMS BEGIN CONSTANTS %IDB_BUTTON1 = 1001 %IDB_BUTTON2 = 1002 %IDB_BUTTON3 = 1003 %IDB_BUTTON4 = 1004 %IDB_BUTTON5 = 1006 %IDD_DIALOG1 = 101 %IDLB_LISTBOX1 = 1007 %IDR_IMGFILE2 = 102 %IDSP_IMAGE1 = 1005 #PBFORMS END CONSTANTS '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Declarations ** '------------------------------------------------------------------------------ DECLARE CALLBACK FUNCTION ShowDIALOG1Proc() DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG #PBFORMS DECLARATIONS '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Main Application Entry Point ** '------------------------------------------------------------------------------ FUNCTION PBMAIN() ShowDIALOG1 %HWND_DESKTOP END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** CallBacks ** '------------------------------------------------------------------------------ CALLBACK FUNCTION ShowDIALOG1Proc() SELECT CASE AS LONG CBMSG CASE %WM_INITDIALOG ' Initialization handler DIALOG SET TEXT CB.HNDL, HEX$(%WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %BS_TEXT OR _ %BS_PUSHBUTTON OR %BS_FLAT OR %BS_CENTER OR %BS_VCENTER) LISTBOX ADD CB.HNDL, %idlb_listbox1, "%WS_CHILD=" & HEX$(%WS_CHILD) LISTBOX ADD CB.HNDL, %idlb_listbox1, "%WS_VISIBLE=" & HEX$(%WS_VISIBLE) LISTBOX ADD CB.HNDL, %idlb_listbox1, "%WS_TABSTOP=" & HEX$(%WS_TABSTOP) LISTBOX ADD CB.HNDL, %idlb_listbox1, "%BS_TEXT=" & HEX$(%BS_TEXT) LISTBOX ADD CB.HNDL, %idlb_listbox1, "%BS_PUSHBUTTON=" & HEX$(%BS_PUSHBUTTON) LISTBOX ADD CB.HNDL, %idlb_listbox1, "%BS_FLAT=" & HEX$(%BS_FLAT) LISTBOX ADD CB.HNDL, %idlb_listbox1, "%BS_CENTER=" & HEX$(%BS_CENTER) LISTBOX ADD CB.HNDL, %idlb_listbox1, "%BS_VCENTER =" & HEX$(%BS_VCENTER ) CASE %WM_NCACTIVATE STATIC hWndSaveFocus AS DWORD IF ISFALSE CBWPARAM THEN ' Save control focus hWndSaveFocus = GetFocus() ELSEIF hWndSaveFocus THEN ' Restore control focus SetFocus(hWndSaveFocus) hWndSaveFocus = 0 END IF CASE %WM_COMMAND ' Process control notifications CONTROL SET FOCUS CB.HNDL, %IDSP_IMAGE1 END SELECT END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Dialogs ** '------------------------------------------------------------------------------ FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG LOCAL lRslt AS LONG #PBFORMS BEGIN DIALOG %IDD_DIALOG1->-> LOCAL hDlg AS DWORD DIALOG NEW hParent, "Dialog1", 201, 366, 201, 132, %WS_POPUP OR _ %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION 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, %IDB_BUTTON1, "Button1", 8, 4, 56, 16 CONTROL ADD BUTTON, hDlg, %IDB_BUTTON2, "Button2", 8, 24, 56, 12 CONTROL ADD BUTTON, hDlg, %IDB_BUTTON3, "Button3", 8, 40, 60, 12, _ %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %BS_TEXT OR %BS_PUSHLIKE _ OR %BS_PUSHBUTTON OR %BS_CENTER OR %BS_VCENTER, %WS_EX_LEFT OR _ %WS_EX_LTRREADING CONTROL ADD BUTTON, hDlg, %IDB_BUTTON4, "Button4", 8, 56, 60, 12, _ %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %BS_TEXT OR _ %BS_PUSHBUTTON OR %BS_FLAT OR %BS_CENTER OR %BS_VCENTER, %WS_EX_LEFT _ OR %WS_EX_LTRREADING CONTROL ADD BUTTON, hDlg, %IDB_BUTTON5, "Button5", 8, 72, 64, 12, _ %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %BS_TEXT OR %BS_PUSHLIKE _ OR %BS_PUSHBUTTON OR %BS_FLAT OR %BS_CENTER OR %BS_VCENTER, _ %WS_EX_LEFT OR %WS_EX_LTRREADING CONTROL ADD LISTBOX, hDlg, %IDLB_LISTBOX1, , 88, 8, 100, 112 CONTROL ADD IMAGE, hDlg, %IDSP_IMAGE1, "#" + FORMAT$(%IDR_IMGFILE2), 8, _ 88, 43, 39 #PBFORMS END DIALOG DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt #PBFORMS BEGIN CLEANUP %IDD_DIALOG1 #PBFORMS END CLEANUP FUNCTION = lRslt END FUNCTION '------------------------------------------------------------------------------
Comment