BCX_WND function

Purpose:

BCX_WND creates a window.

Syntax:

 HndlWnd = BCX_WND(ClassName AS STRING, _
              ProcedureName AS WNDPROC, _
                     Caption AS STRING  _
                    [, hParent AS HWND] _
                    [, Xpos AS INTEGER] _
                    [, Ypos AS INTEGER] _
                   [, Width AS INTEGER] _
                  [, Height AS INTEGER] _
                [, WinStyle AS INTEGER] _
              [, ExWinStyle AS INTEGER] _
                       [, nID AS HMENU)

Return Value:

  • Data type: HWND
    HndlWnd The handle to a new window if the function succeeds. If the function fails, the return value is NULL.

Parameters:

  • Data type: STRING
    ClassName unique string literal name for the window. Windows uses ClassName$ to distinguish one running program from another.
  • Data type: Identifier
    ProcedureName The unquoted name of this instance of a windows procedure. This name also must be appended to the BEGIN EVENTS loop for this window.
  • Data type: STRING
    Caption [OPTIONAL] to be placed as title on the window.
  • Data type: HWND
    hParent [OPTIONAL] The handle of the parent window.
  • Data type: INTEGER
    Xpos [OPTIONAL] initial horizontal x-coordinate of the upper-left corner of the window being created. The default argument for this parameter is CW_USEDEFAULT. For more information, see the x parameter section of the Microsoft CreateWindowExA function webpage.
  • Data type: INTEGER
    Ypos [OPTIONAL] initial vertical y-coordinate of the upper-left corner of the window being created. The default argument for this parameter is CW_USEDEFAULT. For more information, see the y parameter section of the Microsoft CreateWindowExA function webpage.
  • Data type: INTEGER
    Width [OPTIONAL] specifies, in PIXELS, the width of the window being created. The default argument for this parameter is CW_USEDEFAULT. For more information, see the nWidth parameter section of the Microsoft CreateWindowExA function webpage.
  • Data type: INTEGER
    Height [OPTIONAL] specifies, in PIXELS, the height of the window being created. The default argument for this parameter is CW_USEDEFAULT. For more information, see the nHeight parameter section of the Microsoft CreateWindowExA function webpage.
  • Data type: INTEGER
    WinStyle [OPTIONAL] if used, replaces the default Window Style, WS_OVERLAPPEDWINDOW. For more information, visit the Microsoft Window Styles webpage
  • Data type: INTEGER
    ExWinStyle [OPTIONAL] The default Extended Window Style for a BCX_WND is 0. For more information, visit the Microsoft Extended Window Styles webpage.
  • Data type: HMENU
    nID The handle of the menu to be used with the window; nID can be NULL if the window uses the class menu.

Remarks:

Using BCX_WND sets PIXELS on as default.

Example:

GUI NOMAIN

FUNCTION WINMAIN ()
  HWND Form1
  Form1 = BCX_WND("MAINFORM", Form1Proc, "GUI NOMAIN TEST")
  SHOW(Form1)
  FUNCTION = BCX_MSGPUMP()
END FUNCTION

BEGIN EVENTS Form1Proc
END EVENTS MAIN

SHOWMODAL ... ENDMODAL statements

Purpose:

SHOWMODAL ... ENDMODAL are used together to make a BCX_WND window modal. SHOWMODAL ... ENDMODAL can be used only with a BCX_WND window which has another window as its parent. SHOWMODAL ... ENDMODAL cause the parent window to be disabled when the BCX_WND child form is opened and to be enabled when the BCX_WND child form is closed.

Syntax:

' Placed at the point in the program where the BCX_WND
' is to be changed to a modal condition.
SHOWMODAL(HndlWnd)

' Placed at the point in the program where the BCX_WND
' is to be reverted to a modeless condition.
ENDMODAL(HndlWnd)

Parameters:

  • Data type: HWND
    HndlWnd The HWND The handle of the BCX_WND created window.

Example:

This example shows usage of the SHOWMODAL and ENDMODAL macros

GUI NOMAIN, PIXELS
  
FUNCTION WINMAIN ()
  GLOBAL Form1 AS CONTROL
  GLOBAL Button1 AS CONTROL
  
  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()
END FUNCTION
  
BEGIN EVENTS form1Proc
  HANDLE_MSG(WM_COMMAND, form1_command)
  HANDLE_MSG(WM_CLOSE, form1_close)
END EVENTS MAIN
  
MSGHANDLER form1_command
IF CBCTLMSG = BN_CLICKED THEN
  IF CBCTL = 98 THEN
    BCX_MDIALOG(DialogOne,"BCX Modal Dialog",Form1,110,110,110,110)
  END IF
  IF CBCTL = 99 THEN
    BCX_DIALOG(DialogTwo,"BCX Modeless Dialog",Form1,110,110,110,110)
  END IF
  IF CBCTL = 100 THEN
    LoadForm2()
  END IF
  IF CBCTL = 105 THEN
    LoadForm3()
  END IF
  IF CBCTL = 104 THEN
    SendMessage(Form1, WM_CLOSE, 0, 0)
  END IF
END IF
END HANDLER
  
MSGHANDLER form1_close
LReturn = DestroyWindow(hWnd)
END HANDLER
  
'----------------------------------------------------
 
BEGIN MODAL DIALOG AS DialogOne
  
  SELECT CASE CBMSG
    CASE WM_INITDIALOG
    CENTER(hWnd)
    SHOW(hWnd)
  END SELECT
  
END DIALOG
  
'----------------------------------------------------
 
BEGIN DIALOG AS DialogTwo
  
  SELECT CASE CBMSG
    CASE WM_INITDIALOG
    CENTER(hWnd)
    SHOW(hWnd)
  END SELECT
  
END DIALOG
  
FUNCTION LoadForm2 ()
  LOCAL nStyle
  LOCAL form2 AS HWND
  form2 = BCX_WND("CHILD1FORM", form2Proc, "Modal Form", Form1,10,10, 640,400, nStyle, 0)
  BCX_SETICON(form2, 123)
  BCX_BUTTON("Modal",     form2, 101,560, 20, 72, 24)
  BCX_BUTTON("Modeless",  form2, 102,560, 50, 72, 24)
  BCX_BUTTON("Close",     form2, 103,560, 80, 72, 24)
  SHOWMODAL(form2)
  
  FUNCTION = 0
END FUNCTION
  
FUNCTION LoadForm3 ()
  LOCAL nStyle
  LOCAL form3 AS HWND
  form3 = BCX_WND("CHILD2FORM", form3Proc, "Non-Modal Form", Form1,120,120, 640,400, nStyle, 0)
  BCX_SETICON(form3, 123)
  BCX_BUTTON("Modal",     form3, 201,560, 20, 72, 24)
  BCX_BUTTON("Modeless",  form3, 202,560, 50, 72, 24)
  BCX_BUTTON("Close",     form3, 203,560, 80, 72, 24)
  SHOW(form3)
  
  FUNCTION = 0
END FUNCTION
  
BEGIN EVENTS form3Proc
  SELECT CASE CBMSG
    CASE WM_CREATE
    STATIC nWndNo = 0
    SetWindowText(hWnd, "Window No. " & TRIM$(STR$(++nWndNo)))
    CASE WM_COMMAND
    IF CBCTLMSG = BN_CLICKED THEN
      IF CBCTL = 201 THEN
        BCX_MDIALOG(DialogOne,"BCX Modal Dialog",hWnd,110,110,110,110)
      END IF
      IF CBCTL = 202 THEN
        BCX_DIALOG(DialogTwo,"BCX Modeless Dialog",hWnd,110,110,110,110)
      END IF
      IF CBCTL = 203 THEN
        SendMessage(hWnd, WM_CLOSE, 0, 0)
      END IF
    END IF
    CASE WM_CLOSE
    DestroyWindow(hWnd)
  END SELECT
END EVENTS
  
BEGIN EVENTS form2Proc
  SELECT CASE CBMSG
    CASE WM_COMMAND
    IF CBCTLMSG = BN_CLICKED THEN
      IF CBCTL = 101 THEN
        BCX_MDIALOG(DialogOne,"BCX Modal Dialog",hWnd,110,110,110,110)
      END IF
      IF CBCTL = 102 THEN
        BCX_DIALOG(DialogTwo,"BCX Modeless Dialog",hWnd,110,110,110,110)
      END IF
      IF CBCTL = 103 THEN
        SendMessage(hWnd, WM_CLOSE, 0, 0)
      END IF
    END IF
    CASE WM_CLOSE
    ENDMODAL(hWnd)
    SetFocus(Form1)
  END SELECT
END EVENTS