PBXB64 Dialoge & Controls

Dialoge & Controls Standard

Vollständige Dialog- und Control-Unterstützung with DIALOG SHOW MODAL/END, CONTROL ADD, DISPLAY BROWSE/COLOR/FONT/OPENFILE/SAVEFILE, FONT NEW/END, MENU, and ACCEL ATTACH. Echte Win32-Common-Dialogs und Control-Erstellung - not stubs.

Modale Dialoge

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 legt den Dialog an, CONTROL ADD fügt Schaltflächen, Eingabefelder, Beschriftungen und weitere Controls hinzu, und DIALOG SHOW MODAL hDlg, CALL proc TO result führt ihn modal mit einer Callback-Funktion aus. DIALOG END schließt den Dialog; der übergebene Wert wird über TO result zurückgegeben.

Common-Dialogs

Datei-, Farb-, 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

Jede DISPLAY-Anweisung liefert ihr Ergebnis über TO; ein abgebrochener Dialog ergibt einen leeren String (DISPLAY COLOR ergibt -1). DISPLAY OPENFILE/SAVEFILE verwenden GetOpenFileNameA/GetSaveFileNameA. DISPLAY COLOR verwendet ChooseColorA. DISPLAY FONT verwendet ChooseFontA. DISPLAY BROWSE verwendet SHBrowseForFolderA. Alles echte Win32-Common-Dialogs, die per dynamischem Laden der Bibliotheken eingebunden werden.

MENU, FONT, ACCEL

Menü- und Font-Ressourcen
#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 und MENU NEW POPUP erzeugen Menüs, MENU ADD STRING und MENU ADD POPUP füllen sie, und MENU ATTACH bindet die Menüleiste an einen Dialog. FONT NEW/FONT END erzeugen und geben eine Schriftart frei. ACCEL ATTACH installiert eine Tastenkürzel-Tabelle. Alles wird dynamisch über LoadLibraryA/GetProcAddress für comdlg32, user32, gdi32 und shell32 geladen.

Zurück zur Feature-Liste