PBXB64 Dialogs & Controls

Dialogs & Controls Standard

Full dialog and control support with DIALOG SHOW MODAL/END, CONTROL ADD, DISPLAY BROWSE/COLOR/FONT/OPENFILE/SAVEFILE, FONT NEW/END, MENU, and ACCEL ATTACH. Real Win32 common dialogs and control creation - not stubs.

Modal Dialogs

DIALOG SHOW MODAL
#COMPILE EXE #CONSOLE OFF #DIM ALL CALLBACK FUNCTION DlgProc() AS LONG IF CBMSG = %WM_COMMAND AND CBCTLMSG = %BN_CLICKED THEN IF CBCTL = %IDOK THEN DIALOG END CBHNDL, %IDOK ' value is returned through TO result ELSEIF CBCTL = %IDCANCEL THEN DIALOG END CBHNDL, %IDCANCEL END IF END IF END FUNCTION FUNCTION PBMAIN() AS LONG LOCAL hDlg AS QUAD LOCAL result AS QUAD ' Create the dialog (hidden), add controls, then show it modally DIALOG NEW PIXELS, 0, "MyDialog", 100, 100, 400, 300 TO hDlg CONTROL ADD LABEL, hDlg, -1, "Please confirm:", 20, 20, 200, 24 CONTROL ADD BUTTON, hDlg, %IDOK, "&OK", 200, 240, 80, 28 CONTROL ADD BUTTON, hDlg, %IDCANCEL, "&Cancel", 290, 240, 80, 28 DIALOG SHOW MODAL hDlg, CALL DlgProc TO result IF result = %IDOK THEN MSGBOX "User clicked OK" ELSE MSGBOX "User cancelled" END IF FUNCTION = 0 END FUNCTION

DIALOG NEW creates the dialog, CONTROL ADD adds buttons, edit boxes, labels, and other controls, and DIALOG SHOW MODAL hDlg, CALL proc TO result runs it modally with a callback. DIALOG END closes the dialog; the value passed to it is delivered through TO result.

Common Dialogs

File, color, font dialogs
#COMPILE EXE #DIM ALL FUNCTION PBMAIN() AS LONG LOCAL filename AS STRING LOCAL fontName AS STRING LOCAL folder AS STRING LOCAL color AS QUAD LOCAL points AS QUAD ' Open file dialog (parent, x, y, title, start, filter, flags) DISPLAY OPENFILE 0, 0, 0, "Open text file", "", "Text Files|*.txt|All Files|*.*|", 0 TO filename PRINT "Selected: "; filename ' Color picker (initial color red; result -1 = cancelled) DISPLAY COLOR 0, 0, 0, &H0000FF TO color PRINT "Color: "; color ' Font dialog (initial face, size, style) DISPLAY FONT 0, 0, 0, "Arial", 12, 0 TO fontName, points PRINT "Font: "; fontName; " "; points; " pt" ' Browse for folder DISPLAY BROWSE 0, 0, "Select a folder", "" TO folder PRINT "Folder: "; folder FUNCTION = 0 END FUNCTION

Each DISPLAY statement returns its result through TO; a cancelled dialog gives an empty string (DISPLAY COLOR gives -1). DISPLAY OPENFILE/SAVEFILE use GetOpenFileNameA/GetSaveFileNameA. DISPLAY COLOR uses ChooseColorA. DISPLAY FONT uses ChooseFontA. DISPLAY BROWSE uses SHBrowseForFolderA. All real Win32 common dialogs loaded via dynamic library loading.

MENU, FONT, ACCEL

Menu and font resources
#COMPILE EXE #DIM ALL TYPE AccelRec ' native ACCEL layout (6 bytes) fVirt AS BYTE pad AS BYTE key AS WORD cmd AS WORD END TYPE FUNCTION PBMAIN() AS LONG LOCAL hDlg AS QUAD LOCAL hMenu AS QUAD LOCAL hPopup AS QUAD LOCAL hFont AS QUAD LOCAL ok AS QUAD DIM acc(1 TO 2) AS AccelRec DIALOG NEW PIXELS, 0, "Menu demo", 100, 100, 400, 300 TO hDlg ' Create a menu bar with a File popup MENU NEW BAR TO hMenu MENU NEW POPUP TO hPopup MENU ADD STRING hPopup, "&Open", 100 MENU ADD STRING hPopup, "E&xit", 101 MENU ADD POPUP hMenu, "&File", hPopup AS 1 MENU ATTACH hMenu, hDlg MENU DRAW BAR hDlg ' Create a font (name, pixel height, style) FONT NEW "Arial", 16, 0 TO hFont ' Attach an accelerator table: key code and command ID per record acc(1).key = &H71 : acc(1).cmd = 100 ' VK_F2 -> command 100 acc(2).key = &H73 : acc(2).cmd = 101 ' VK_F4 -> command 101 ACCEL ATTACH hDlg, acc() TO ok PRINT "Accelerators attached: "; ok FONT END hFont DIALOG END hDlg FUNCTION = 0 END FUNCTION

MENU NEW BAR and MENU NEW POPUP create menus, MENU ADD STRING and MENU ADD POPUP fill them, and MENU ATTACH binds the bar to a dialog. FONT NEW/FONT END create and release a font. ACCEL ATTACH installs an accelerator table. All loaded dynamically via LoadLibraryA/GetProcAddress for comdlg32, user32, gdi32, and shell32.

Back to feature list