HANDLE_CMD macro
Purpose: The HANDLE_CMD macro procedure, typically placed in the BEGIN EVENTS ... END EVENTS loop, is used with the CMDHANDLER macro, to provide a module based alternative for System-Defined WM_COMMAND Message handling in BCX.
Syntax 1: HANDLE_CMD(CMD_ID%, Procedure, LReturn) Parameters:
|
Remarks:
HANDLE_CMD(IDM_NEW, OnNewClick,0)
translates to
IFMsg=WM_COMMANDANDCBCTL=IDM_NEWTHENOnNewClick(hWnd, wParam, lParam,0)ENDIF
HANDLE_CMD INLINE macro
Purpose: The HANDLE_CMD INLINE macro procedure, typically placed in the BEGIN EVENTS ... END EVENTS loop, is used for System-Defined Message handling in BCX. The INLINE form of the macro is much simpler to use if you only have a single line of code. If you have more code then use the form described above in Syntax 1.
Syntax 2:
Parameters:
|
Remarks:
HANDLE_CMDCMD_ID1% INLINE"SendMessage(hWnd, CMD_ID2%, 0, 0) : EXIT FUNCTION"
translates to
IFMsg=WM_COMMANDANDCBCTL=CMD_ID1%THENSendMessage(hWnd, CMD_ID2%,0,0)EXITFUNCTIONENDIF
CMDHANDLER macro procedure
Purpose: A CMDHANDLER macro
procedure module is built to process the message from the
HANDLE_CMD function.
Syntax:
Parameters:
|
Remarks:
CMDHANDLEROnNewClick()' your code goes hereLReturn=SendMessage(hWnd, IDM_NEW,0,0)ENDHANDLER
translates to
FUNCTIONOnNewClick(hWnd, wParam, lParam, LReturn)ASLONG' your code goes hereLRETURN=SendMessage(hWnd, IDM_NEW,0,0)FUNCTION=LReturnENDFUNCTION
Example:
GUINOMAIN,PIXELSFUNCTIONWINMAIN()GLOBALForm1ASCONTROLGLOBALButton1ASCONTROL Form1=BCX_WND("MAINFORM", form1Proc, _"Multi-Form GUI NoMain / Dialog Test", _0,0,0,800,600)BCX_SET_FORM_COLOR(Form1,QBCOLOR(31))BCX_SETICON(Form1,123)Button1=BCX_BUTTON("Modal", Form1,98,690,20,96,24)BCX_BUTTON("Modeless", Form1,99,690,50,96,24)BCX_BUTTON("Modal Form", Form1,100,690,80,96,24)BCX_BUTTON("Non-Modal Form", Form1,105,690,110,96,24)BCX_BUTTON("Close", Form1,104,690,140,96,24)CENTER(Form1)SHOW(Form1)SetFocus(Button1)FUNCTION=BCX_MSGPUMP()ENDFUNCTIONBEGINEVENTSform1ProcSELECTCASEMsgHANDLE_MSG(WM_COMMAND, form1_command)HANDLE_MSG(WM_CLOSE, form1_close)ENDSELECTENDEVENTSMAINMSGHANDLERform1_commandIFCBCTLMSG=BN_CLICKEDTHENIFCBCTL=98THENBCX_MDIALOG(DialogOne,"BCX Modal Dialog", Form1,110,110,110,110)ENDIFIFCBCTL=99THENBCX_DIALOG(DialogTwo,"BCX Modeless Dialog", Form1,110,110,110,110)ENDIFIFCBCTL=100THENLoadForm2()ENDIFIFCBCTL=105THENLoadForm3()ENDIFIFCBCTL=104THENSendMessage(Form1, WM_CLOSE,0,0)ENDIFENDIFENDHANDLERMSGHANDLERform1_close LReturn=DestroyWindow(hWnd)ENDHANDLER'----------------------------------------------------BEGINMODALDIALOGASDialogOneSELECTCASECBMSGCASEWM_INITDIALOGCENTER(hWnd)SHOW(hWnd)ENDSELECTENDDIALOG'----------------------------------------------------BEGINDIALOGASDialogTwoSELECTCASECBMSGCASEWM_INITDIALOGCENTER(hWnd)SHOW(hWnd)ENDSELECTENDDIALOGFUNCTIONLoadForm2()LOCALnStyle=WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | _ WS_CLIPSIBLINGS | WS_BORDERLOCALformASHWND'EnableWindow(Form1, FALSE)form=BCX_WND("CHILD1FORM", form2Proc, _"Modal Form", Form1, _10,10,640,400, nStyle,0)BCX_SETICON(form,123)BCX_BUTTON("Modal", form,101,560,20,72,24)BCX_BUTTON("Modeless", form,102,560,50,72,24)BCX_BUTTON("Close", form,103,560,80,72,24)CENTER(form)SHOWMODAL(form)FUNCTION=0ENDFUNCTIONFUNCTIONLoadForm3()LOCALnStyle=WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | _ WS_CLIPSIBLINGS | WS_BORDERLOCALformASHWND form=BCX_WND("CHILD2FORM", _ form3Proc, _"Non-Modal Form", _ Form1, _10,10,640,400, nStyle,0)BCX_SETICON(form,123)BCX_BUTTON("Modal", form,201,560,20,72,24)BCX_BUTTON("Modeless", form,202,560,50,72,24)BCX_BUTTON("Close", form,203,560,80,72,24)CENTER(form)SHOW(form)FUNCTION=0ENDFUNCTIONBEGINEVENTSform3ProcSELECTCASECBMSGCASEWM_CREATE STATIC nWndNo=0SetWindowText(hWnd,"Window No. "&TRIM$(STR$(++nWndNo)))CASEWM_COMMANDIFCBCTLMSG=BN_CLICKEDTHENIFCBCTL=201THENBCX_MDIALOG(DialogOne,"BCX Modal Dialog", hWnd,110,110,110,110)ENDIFIFCBCTL=202THENBCX_DIALOG(DialogTwo,"BCX Modeless Dialog", hWnd,110,110,110,110)ENDIFIFCBCTL=203THENSendMessage(hWnd, WM_CLOSE,0,0)ENDIFENDIFCASEWM_CLOSE DestroyWindow(hWnd)ENDSELECTENDEVENTSBEGINEVENTSform2ProcSELECTCASECBMSGCASEWM_COMMANDIFCBCTLMSG=BN_CLICKEDTHENIFCBCTL=101THENBCX_MDIALOG(DialogOne,"BCX Modal Dialog", hWnd,110,110,110,110)ENDIFIFCBCTL=102THENBCX_DIALOG(DialogTwo,"BCX Modeless Dialog", hWnd,110,110,110,110)ENDIFIFCBCTL=103THENSendMessage(hWnd, WM_CLOSE,0,0)ENDIFENDIFCASEWM_CLOSEENDMODAL(hWnd)SetFocus(Form1)ENDSELECTENDEVENTS