From 0ec40e1c72595b95178d43f6b3b80fe77739bc51 Mon Sep 17 00:00:00 2001 From: bplu4t2f Date: Thu, 17 Sep 2026 13:29:46 +0200 Subject: [PATCH 1/6] Fix typo --- win32/embedded_manifest/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win32/embedded_manifest/README.md b/win32/embedded_manifest/README.md index e0db43d..9d2ac2b 100644 --- a/win32/embedded_manifest/README.md +++ b/win32/embedded_manifest/README.md @@ -1,7 +1,7 @@ # Embedded manifest example Windows executables can contain manifests. -Manifests are metadata can control various aspects before and during program execution. +Manifests are metadata that can control various aspects before and during program execution. The most common use cases are: * UAC awareness (for privilege escalation) From b9fdb66473fefafe3b772c59d750c57ba05c1d3b Mon Sep 17 00:00:00 2001 From: bplu4t2f Date: Thu, 17 Sep 2026 16:35:06 +0200 Subject: [PATCH 2/6] Add win32 common dialog examples. --- win32/common_dialogs/README.md | 70 +++++++ win32/common_dialogs/app.manifest | 14 ++ win32/common_dialogs/color_chooser.odin | 39 ++++ win32/common_dialogs/doc/color_chooser.png | Bin 0 -> 16571 bytes win32/common_dialogs/doc/find.png | Bin 0 -> 8057 bytes win32/common_dialogs/doc/font_chooser.png | Bin 0 -> 19452 bytes win32/common_dialogs/doc/open_file.png | Bin 0 -> 64030 bytes win32/common_dialogs/doc/page_setup.png | Bin 0 -> 13917 bytes win32/common_dialogs/doc/print.png | Bin 0 -> 22458 bytes win32/common_dialogs/doc/replace.png | Bin 0 -> 9130 bytes win32/common_dialogs/doc/save_file.png | Bin 0 -> 60827 bytes win32/common_dialogs/file_dialog.odin | 151 +++++++++++++++ win32/common_dialogs/find_replace_dialog.odin | 156 +++++++++++++++ win32/common_dialogs/font_chooser.odin | 43 +++++ win32/common_dialogs/main.odin | 178 ++++++++++++++++++ win32/common_dialogs/print_dialogs.odin | 112 +++++++++++ win32/common_dialogs/resource.rc | 3 + 17 files changed, 766 insertions(+) create mode 100644 win32/common_dialogs/README.md create mode 100644 win32/common_dialogs/app.manifest create mode 100644 win32/common_dialogs/color_chooser.odin create mode 100644 win32/common_dialogs/doc/color_chooser.png create mode 100644 win32/common_dialogs/doc/find.png create mode 100644 win32/common_dialogs/doc/font_chooser.png create mode 100644 win32/common_dialogs/doc/open_file.png create mode 100644 win32/common_dialogs/doc/page_setup.png create mode 100644 win32/common_dialogs/doc/print.png create mode 100644 win32/common_dialogs/doc/replace.png create mode 100644 win32/common_dialogs/doc/save_file.png create mode 100644 win32/common_dialogs/file_dialog.odin create mode 100644 win32/common_dialogs/find_replace_dialog.odin create mode 100644 win32/common_dialogs/font_chooser.odin create mode 100644 win32/common_dialogs/main.odin create mode 100644 win32/common_dialogs/print_dialogs.odin create mode 100644 win32/common_dialogs/resource.rc diff --git a/win32/common_dialogs/README.md b/win32/common_dialogs/README.md new file mode 100644 index 0000000..da4f1a8 --- /dev/null +++ b/win32/common_dialogs/README.md @@ -0,0 +1,70 @@ +# Common dialog examples + +Demonstrates the usage of the common Win32 dialog boxes in `comdlg32.dll`: + +* [Color chooser](#color-chooser-dialog) +* [Font chooser](#font-chooser-dialog) +* [Open/Save file](#opensave-file-dialog) +* [Print](#print-dialog) +* [Page setup](#page-setup-dialog) +* [Find/Replace text](#findreplace-text-dialog) + +See also: https://learn.microsoft.com/en-us/windows/win32/dlgbox/using-common-dialog-boxes + +## Color chooser dialog + +See: `color_chooser.odin` + +![Color chooser](doc/color_chooser.png) + +## Font chooser dialog + +See: `font_chooser.odin` + +![Font chooser](doc/font_chooser.png) + +## Open/Save file dialog + +See: `file_dialog.odin` + +The example contains a convenience wrapper which converts to and from the Odin `string` type, +and handles construction of the file type filter string. + +The example code does not implement the multi-select option. + +**TODO**: Implement convenience feature for `file_dialog` with `ALLOW_MULTI_SELECT` that takes +output of the form `"path\u0000\file1u\0000file2"` and turns it into `[]string` with the path + file pre-concatenated for the user. + +![Open file](doc/open_file.png) + +![Save file](doc/save_file.png) + +## Print dialog + +See: `print.odin` + +The print dialog examples reproduce the examples provided on MSDN without further modifications. + +![Print](doc/print.png) + +## Page setup dialog + +See: `page_setup.odin` + +The example also demonstrates how the displayed preview page can be customized. + +![Page setup](doc/page_setup.png) + +## Find/Replace text dialog + +See `find_replace_dialog.odin` + +Unlike the other dialogs, this one requires additional interaction with the application's +main window. + +The application is responsible for actually performing the find/replace action +in `handle_find_replace_message`. + +![Find](doc/find.png) + +![Replace](doc/replace.png) diff --git a/win32/common_dialogs/app.manifest b/win32/common_dialogs/app.manifest new file mode 100644 index 0000000..ce01b22 --- /dev/null +++ b/win32/common_dialogs/app.manifest @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/win32/common_dialogs/color_chooser.odin b/win32/common_dialogs/color_chooser.odin new file mode 100644 index 0000000..cc79d64 --- /dev/null +++ b/win32/common_dialogs/color_chooser.odin @@ -0,0 +1,39 @@ +package comdlg32_example + +import win "core:sys/windows" + +// Stores the persistent custom color palette of the color chooser dialog. +g_color_chooser_custom_colors := default_custom_colors() + +default_custom_colors :: proc "contextless" () -> [16]win.COLORREF { + c: [16]win.COLORREF + for i in 0 ..< len(c) { + c[i] = win.RGB(255, 255, 255) + } + return c +} + +choose_color :: proc( + owner: win.HWND, + initial_color: win.COLORREF = 0x00ffffff, +) -> ( + dialog_confirmed: bool, + new_color: win.COLORREF, +) { + cc := win.CHOOSECOLORW { + lStructSize = size_of(win.CHOOSECOLORW), + hwndOwner = owner, + hInstance = nil, + rgbResult = initial_color, + lpCustColors = raw_data(g_color_chooser_custom_colors[:]), + Flags = win.CC_RGBINIT | win.CC_FULLOPEN, + } + + confirmed := win.ChooseColorW(&cc) + + if confirmed { + return true, cc.rgbResult + } else { + return false, 0 + } +} diff --git a/win32/common_dialogs/doc/color_chooser.png b/win32/common_dialogs/doc/color_chooser.png new file mode 100644 index 0000000000000000000000000000000000000000..50f41c4c3090088938b2427024ffdb0c070de3f1 GIT binary patch literal 16571 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૞Gv6Gk!cszbYd2ivOSa#hj)gm~S% z-e;}$Jg`!@mxQ_mI9S2(a;xPf_@=aV;KIfW@p^g3=;+IHk1>)%!wEAyHtc(aP@zc8 z9Xgzclv`9Zz`oj%uW!D3b^wulD^>v@ zD=Qo49n?k3T3J9Lx!l(0gk9+TfZWvAn+S19=N@Z}MI~1Pz>D+1U)Wf#!k-uC!3nZp z*qp+#3?sM_Scp_}10RR!Z bMTRgmINC^kE(QL>0VElSyhMqZq5uB}cJkm@ literal 0 HcmV?d00001 diff --git a/win32/common_dialogs/doc/find.png b/win32/common_dialogs/doc/find.png new file mode 100644 index 0000000000000000000000000000000000000000..03c90d2f2ba8150973e47e1db3cb17b2146cf79d GIT binary patch literal 8057 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 literal 0 HcmV?d00001 diff --git a/win32/common_dialogs/doc/font_chooser.png b/win32/common_dialogs/doc/font_chooser.png new file mode 100644 index 0000000000000000000000000000000000000000..49082566dd182bfc688994248b4dee77ff1adfd9 GIT binary patch literal 19452 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 P!m!@FRtA+xz4QNHc3-Pl literal 0 HcmV?d00001 diff --git a/win32/common_dialogs/doc/print.png b/win32/common_dialogs/doc/print.png new file mode 100644 index 0000000000000000000000000000000000000000..5201db8024068d66783bc081e1fb764826d371bf GIT binary patch literal 22458 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%0A0qOnv~)sg6-h0P79*%JS} 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�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 Z|MmsP{Pik*PRs$h&ePS;Wt~$(697@D%QgT2 literal 0 HcmV?d00001 diff --git a/win32/common_dialogs/file_dialog.odin b/win32/common_dialogs/file_dialog.odin new file mode 100644 index 0000000..d506ff1 --- /dev/null +++ b/win32/common_dialogs/file_dialog.odin @@ -0,0 +1,151 @@ +package comdlg32_example + +import runtime "base:runtime" +import strings "core:strings" +import log "core:log" +import win "core:sys/windows" + +file_dialog_mode :: enum { + open, + save, +} + +file_dialog_filter :: struct { + // The full line of text displayed to the user in the selection box. + // + // Examples: + // - `"Text files (*.txt)"` + // - `"All files (*.*)"` + display_text: string, + + // The internal search pattern used to filter the files. + // + // Examples: + // - `"*.txt"` + // - `"*.*"` // NOTE: This includes files without an extension. + filter: string, +} + +file_dialog :: proc( + owner: win.HWND, + mode: file_dialog_mode, + initial_file: Maybe(string) = nil, + filters: []file_dialog_filter = nil, + #any_int selected_filter_index: u32 = 0, + dialog_caption: Maybe(string) = nil, + initial_directory: Maybe(string) = nil, + allocator: runtime.Allocator = context.temp_allocator, +) -> ( + dialog_confirmed: bool, + selected_file: string, +) { + file_buf := make([]u16, win.MAX_PATH_WIDE, context.temp_allocator) + file_buf[0] = 0 + + if initial_file != nil { + converted := win.utf8_to_wstring(file_buf, initial_file.?) + if converted == nil { + // Conversion error. + log.warnf("Unable to convert initial file name string.") + file_buf[0] = 0 + } + } + + ofn := win.OPENFILENAMEW { + lStructSize = size_of(win.OPENFILENAMEW), + hwndOwner = owner, + lpstrFilter = file_dialog_build_filter_string(filters), + nFilterIndex = selected_filter_index + 1, + lpstrFile = raw_data(file_buf[:]), + nMaxFile = win.MAX_PATH_WIDE, + } + + if dialog_caption != nil { + ofn.lpstrTitle = win.utf8_to_wstring(dialog_caption.?, context.temp_allocator) + } + if initial_directory != nil { + ofn.lpstrInitialDir = win.utf8_to_wstring(initial_directory.?, context.temp_allocator) + } + + confirmed: win.BOOL + + switch mode { + case .open: + ofn.Flags = win.OFN_PATHMUSTEXIST | win.OFN_FILEMUSTEXIST | win.OFN_EXPLORER + confirmed = win.GetOpenFileNameW(&ofn) + case .save: + ofn.Flags = win.OFN_OVERWRITEPROMPT | win.OFN_EXPLORER + confirmed = win.GetSaveFileNameW(&ofn) + case: + unreachable() + } + + if confirmed { + // Convert result to string. + path := cast(cstring16)ofn.lpstrFile + path_str, err1 := win.wstring_to_utf8(path, allocator = allocator) + if err1 != nil { + log.warnf("File dialog confirmed - string conversion error: %v", err1) + return false, "" + } + return true, path_str + } else { + return false, "" + } +} + +// Converts the `filters` slice to the string format required by `OPENFILENAMEW.lpstrFilter`. +// +// Returns `nil` if `filters` is an empty slice. +file_dialog_build_filter_string :: proc(filters: []file_dialog_filter, allocator: runtime.Allocator = context.temp_allocator) -> win.LPCWSTR { + + if len(filters) == 0 { + return nil + } + + needed_capacity := 0 + for f in filters { + needed_capacity += len(f.display_text) + needed_capacity += 1 + needed_capacity += len(f.filter) + needed_capacity += 1 + } + needed_capacity += 1 + + sb: strings.Builder + strings.builder_init_len_cap(&sb, 0, needed_capacity, context.temp_allocator) + + for f in filters { + strings.write_string(&sb, f.display_text) + strings.write_string(&sb, "\x00") + strings.write_string(&sb, f.filter) + strings.write_string(&sb, "\x00") + } + strings.write_string(&sb, "\x00") + + return win.utf8_to_wstring(strings.to_string(sb), allocator) +} + +// Converts a file path or file name to the display name that the file explorer would +// display to the user. This takes into account system settings regarding file extensions. +get_file_display_name :: proc(file_path: string, allocator := context.temp_allocator) -> (result: string, ok: bool) #optional_ok { + file_path_wstr := win.utf8_to_wstring(file_path, context.temp_allocator) + needed := win.GetFileTitleW(file_path_wstr, nil, 0) + if needed <= 0 { + return "", false + } + buf := make([]u16, needed, context.temp_allocator) + conversion_result := win.GetFileTitleW(file_path_wstr, raw_data(buf[:]), auto_cast len(buf)) + if conversion_result == 0 { + // Success. + r, err := win.wstring_to_utf8(cast(win.wstring)raw_data(buf[:]), allocator = allocator) + if err != nil { + return "", false + } else { + return r, true + } + } else { + // Conversion failure. + return "", false + } +} diff --git a/win32/common_dialogs/find_replace_dialog.odin b/win32/common_dialogs/find_replace_dialog.odin new file mode 100644 index 0000000..e813fe3 --- /dev/null +++ b/win32/common_dialogs/find_replace_dialog.odin @@ -0,0 +1,156 @@ +package comdlg32_example + +import fmt "core:fmt" +import win "core:sys/windows" + +// Registered window message ID for the find/replace messages. +g_find_replace_msg: win.UINT + +// The current find/replace window handle needs to be stored +// so we can handle dialog messages (IsDialogMessageW) correctly. +// This simple approach (using a global variable) implies that +// only one find/replace window can be open at any time. +g_current_find_replace_window: win.HWND + +find_replace_ctx :: struct { + fr: win.FINDREPLACEW, + find_buf: [dynamic]win.WCHAR, + replace_buf: [dynamic]win.WCHAR, +} + +find_text :: proc( + owner: win.HWND, + initial_search_string: string = "", + max_find_string_length: int = 200, +) { + if g_current_find_replace_window != nil { + // Search/replace window is already open. + win.SetActiveWindow(g_current_find_replace_window) + return + } + + if g_find_replace_msg == 0 { + // Need to register the find/replace window message first. + g_find_replace_msg = win.RegisterWindowMessageW(win.FINDMSGSTRINGW) + } + + // This is a modeless dialog, which means the contextual memory required + // by the dialog must survive this procedure call, until the dialog + // reports that it is terminating (FR_DIALOGTERM). + ctx := new(find_replace_ctx) + ctx.find_buf = make([dynamic]win.WCHAR, max_find_string_length + 1) + + if initial_search_string != "" { + conversion_result := win.utf8_to_utf16(ctx.find_buf[:], initial_search_string) + if conversion_result == nil { + // Conversion failure (noncritical). + ctx.find_buf[0] = 0 + } + } + + ctx.fr = win.FINDREPLACEW { + lStructSize = size_of(win.FINDREPLACEW), + hwndOwner = owner, + Flags = win.FR_SHOWWRAPAROUND, + lpstrFindWhat = raw_data(ctx.find_buf[:]), + wFindWhatLen = cast(win.WORD)len(ctx.find_buf), + lCustData = cast(win.LPARAM)cast(uintptr)ctx, + } + + g_current_find_replace_window = win.FindTextW(&ctx.fr) +} + +replace_text :: proc( + owner: win.HWND, + initial_search_string: string = "", + initial_replace_string: string = "", + max_find_string_length: int = 200, + max_replace_string_length: int = 200, +) { + if g_current_find_replace_window != nil { + win.SetActiveWindow(g_current_find_replace_window) + return + } + + if g_find_replace_msg == 0 { + // Need to register the find/replace window message first. + g_find_replace_msg = win.RegisterWindowMessageW(win.FINDMSGSTRINGW) + } + + // This is a modeless dialog, which means the contextual memory required + // by the dialog must survive this procedure call, until the dialog + // reports that it is terminating (FR_DIALOGTERM). + ctx := new(find_replace_ctx) + ctx.find_buf = make([dynamic]win.WCHAR, max_find_string_length + 1) + ctx.replace_buf = make([dynamic]win.WCHAR, max_replace_string_length + 1) + + if initial_search_string != "" { + conversion_result := win.utf8_to_utf16(ctx.find_buf[:], initial_search_string) + if conversion_result == nil { + // Conversion failure (noncritical). + ctx.find_buf[0] = 0 + } + } + + if initial_replace_string != "" { + conversion_result := win.utf8_to_utf16(ctx.replace_buf[:], initial_replace_string) + if conversion_result == nil { + // Conversion failure (noncritical). + ctx.replace_buf[0] = 0 + } + } + + ctx.fr = win.FINDREPLACEW { + lStructSize = size_of(win.FINDREPLACEW), + hwndOwner = owner, + Flags = win.FR_SHOWWRAPAROUND, + lpstrFindWhat = raw_data(ctx.find_buf[:]), + lpstrReplaceWith = raw_data(ctx.replace_buf[:]), + wFindWhatLen = cast(win.WORD)len(ctx.find_buf), + wReplaceWithLen = cast(win.WORD)len(ctx.replace_buf), + lCustData = cast(win.LPARAM)cast(uintptr)ctx, + } + + g_current_find_replace_window = win.ReplaceTextW(&ctx.fr) +} + +handle_find_replace_message :: proc(hwnd: win.HWND, wparam: win.WPARAM, lparam: win.LPARAM) { + fr := cast(^win.FINDREPLACEW)cast(uintptr)lparam + fr_ctx := cast(^find_replace_ctx)cast(uintptr)fr.lCustData + if fr.Flags & win.FR_DIALOGTERM != 0 { + // Terminate dialog. We can free any memory allocated + // here for the find/replace dialog, and invalidate any handles. + fmt.printfln("Find/Replace dialog closed.") + delete(fr_ctx.find_buf) + fr_ctx.find_buf = nil + delete(fr_ctx.replace_buf) + fr_ctx.replace_buf = nil + free(fr_ctx) + g_current_find_replace_window = nil + return + } + search_direction_down := fr.Flags & win.FR_DOWN != 0 + whole_word := fr.Flags & win.FR_WHOLEWORD != 0 + match_case := fr.Flags & win.FR_MATCHCASE != 0 + wrap_around := fr.Flags & win.FR_WRAPAROUND != 0 + if fr.Flags & win.FR_FINDNEXT != 0 { + needle := cast(win.wstring)fr.lpstrFindWhat + fmt.printfln("Find/Replace: Find next: %v - down: %v - whole word: %v - match case: %v - wrap around: %v", + needle, search_direction_down, whole_word, match_case, wrap_around, + ) + } + if fr.Flags & win.FR_REPLACE != 0 { + find := cast(win.wstring)fr.lpstrFindWhat + replace := cast(win.wstring)fr.lpstrReplaceWith + fmt.printfln("Find/Replace: Replace next: %v -> %v - down: %v - whole word: %v - match case: %v - wrap around: %v", + find, replace, search_direction_down, whole_word, match_case, wrap_around, + ) + } + if fr.Flags & win.FR_REPLACEALL != 0 { + find := cast(win.wstring)fr.lpstrFindWhat + replace := cast(win.wstring)fr.lpstrReplaceWith + fmt.printfln("Find/Replace: Replace all: %v -> %v - down: %v - whole word: %v - match case: %v - wrap around: %v", + find, replace, search_direction_down, whole_word, match_case, wrap_around, + ) + } +} diff --git a/win32/common_dialogs/font_chooser.odin b/win32/common_dialogs/font_chooser.odin new file mode 100644 index 0000000..485b624 --- /dev/null +++ b/win32/common_dialogs/font_chooser.odin @@ -0,0 +1,43 @@ +package comdlg32_example + +import win "core:sys/windows" + +choose_font :: proc( + owner: win.HWND, + initial_font: Maybe(win.LOGFONTW) = nil, + initial_text_color: win.COLORREF = 0x00000000, +) -> ( + dialog_confirmed: bool, + new_font: win.LOGFONTW, + new_text_color: win.COLORREF, +) { + // If no initial font is provided, we query the standard system message font as + // the initially selected font. + font := initial_font.? if initial_font != nil else get_default_ui_logfont() + + cf := win.CHOOSEFONTW { + lStructSize = size_of(win.CHOOSEFONTW), + hwndOwner = owner, + lpLogFont = &font, + rgbColors = initial_text_color, + Flags = win.CF_SCREENFONTS | win.CF_EFFECTS | win.CF_INITTOLOGFONTSTRUCT, + } + + confirmed := win.ChooseFontW(&cf) + + if confirmed { + return true, font, cf.rgbColors + } else { + return false, {}, 0 + } +} + +get_default_ui_logfont :: proc() -> win.LOGFONTW { + // NOTE: There are multiple valid definitions of what the "default UI font" can be. + // This implementation arbitrarily chooses the "NonClientMetrics MessageFont". + ncm := win.NONCLIENTMETRICSW { + cbSize = size_of(win.NONCLIENTMETRICSW), + } + win.SystemParametersInfoW(win.SPI_GETNONCLIENTMETRICS, 0, &ncm, 0) + return ncm.lfMessageFont +} diff --git a/win32/common_dialogs/main.odin b/win32/common_dialogs/main.odin new file mode 100644 index 0000000..7854625 --- /dev/null +++ b/win32/common_dialogs/main.odin @@ -0,0 +1,178 @@ +package comdlg32_example + +// This file contains the main window, with a demo button for each of the common dialog examples. + +import runtime "base:runtime" +import os "core:os" +import win "core:sys/windows" +import fmt "core:fmt" + +main :: proc() { + + instance := cast(win.HINSTANCE)win.GetModuleHandleW(nil) + + wndclass := win.WNDCLASSW { + lpfnWndProc = wndproc, + hInstance = instance, + hCursor = win.LoadCursorA(nil, win.IDC_ARROW), + hbrBackground = cast(win.HBRUSH)cast(uintptr)(win.COLOR_3DFACE + 1), + lpszClassName = "comdlg32_example", + } + + win.RegisterClassW(&wndclass) + + hwnd := win.CreateWindowW(wndclass.lpszClassName, "Comdlg32 Example", + win.WS_OVERLAPPEDWINDOW, + win.CW_USEDEFAULT, 0, 800, 600, + nil, nil, instance, nil) + + win.ShowWindow(hwnd, win.SW_SHOW) + win.UpdateWindow(hwnd) + + msg: win.MSG + for win.GetMessageW(&msg, nil, 0, 0) > 0 { + if g_current_find_replace_window != nil && win.IsDialogMessageW(g_current_find_replace_window, &msg) { + // This is a keyboard navigation message targeting the find/replace window. + continue + } + win.TranslateMessage(&msg) + win.DispatchMessageW(&msg) + } + + os.exit(cast(int)msg.wParam) +} + +IDC_CHOOSE_COLOR :: 101 +IDC_CHOOSE_FONT :: 102 +IDC_OPEN_FILE :: 103 +IDC_SAVE_FILE :: 104 +IDC_PRINT :: 105 +IDC_PRINT_PROPERTIES :: 106 +IDC_PAGE_SETUP :: 107 +IDC_FIND_TEXT :: 108 +IDC_REPLACE_TEXT :: 109 + +@(private="file") +wndproc :: proc "system" (hwnd: win.HWND, msg: win.UINT, wparam: win.WPARAM, lparam: win.LPARAM) -> win.LRESULT { + switch msg { + + case win.WM_CREATE: + context = runtime.default_context() + x :: 10 + y := i32(10) + logfont := get_default_ui_logfont() + font := win.CreateFontIndirectW(&logfont) + + create_button :: proc(parent: win.HWND, font: win.HFONT, x: i32, y: ^i32, id: i32, text: win.LPCWSTR) -> win.HWND { + hwnd := win.CreateWindowW("BUTTON", text, + win.WS_VISIBLE | win.WS_CHILD | win.BS_PUSHBUTTON, + x, y^, 150, 25, + parent, cast(win.HMENU)cast(uintptr)id, nil, nil) + win.SendMessageW(hwnd, win.WM_SETFONT, cast(uintptr)font, 0) + y^ += 30 + return hwnd + } + + create_button(hwnd, font, x, &y, IDC_CHOOSE_COLOR, "Choose color...") + create_button(hwnd, font, x, &y, IDC_CHOOSE_FONT, "Choose font...") + create_button(hwnd, font, x, &y, IDC_OPEN_FILE, "Open file...") + create_button(hwnd, font, x, &y, IDC_SAVE_FILE, "Save file...") + create_button(hwnd, font, x, &y, IDC_PRINT, "Print...") + create_button(hwnd, font, x, &y, IDC_PRINT_PROPERTIES, "Print properties...") + create_button(hwnd, font, x, &y, IDC_PAGE_SETUP, "Page setup...") + create_button(hwnd, font, x, &y, IDC_FIND_TEXT, "Find text...") + create_button(hwnd, font, x, &y, IDC_REPLACE_TEXT, "Replace text...") + + case win.WM_DESTROY: + win.PostQuitMessage(0) + + case win.WM_COMMAND: + context = runtime.default_context() + source := win.LOWORD(wparam) + nc := win.HIWORD(wparam) + + switch source { + + case IDC_CHOOSE_COLOR: + if nc == win.BN_CLICKED { + dialog_confirmed, color := choose_color(hwnd) + if dialog_confirmed { + fmt.printfln("Choose color dialog confirmed: 0x%8x", color) + } else { + fmt.printfln("Choose color dialog canceled.") + } + } + + case IDC_CHOOSE_FONT: + if nc == win.BN_CLICKED { + dialog_confirmed, font, text_color := choose_font(hwnd) + if dialog_confirmed { + fmt.printfln("Choose font dialog confirmed: %v - text color: 0x%8x", font, text_color) + } else { + fmt.printfln("Choose font dialog canceled.") + } + } + + case IDC_OPEN_FILE: + if nc == win.BN_CLICKED { + dialog_confirmed, result := file_dialog(hwnd, .open) + if dialog_confirmed { + display_title := get_file_display_name(result) + fmt.printfln("Open file dialog confirmed: \"%v\" (Display name: \"%v\")", result, display_title) + } else { + fmt.printfln("Open file dialog canceled.") + } + } + + case IDC_SAVE_FILE: + if nc == win.BN_CLICKED { + filters := [?]file_dialog_filter { + { display_text = "Text files (*.txt)", filter = "*.txt" }, + { display_text = "All files (*.*)", filter = "*.*" }, + } + dialog_confirmed, result := file_dialog(hwnd, .save, filters = filters[:]) + if dialog_confirmed { + display_title := get_file_display_name(result) + fmt.printfln("Save file dialog confirmed: \"%v\" (Display name: \"%v\")", result, display_title) + } else { + fmt.printfln("Save file dialog canceled.") + } + } + + case IDC_PRINT: + if nc == win.BN_CLICKED { + print(hwnd) + } + + case IDC_PRINT_PROPERTIES: + if nc == win.BN_CLICKED { + print_properties(hwnd) + } + + case IDC_PAGE_SETUP: + if nc == win.BN_CLICKED { + page_setup(hwnd) + } + + case IDC_FIND_TEXT: + if nc == win.BN_CLICKED { + find_text(hwnd) + } + + case IDC_REPLACE_TEXT: + if nc == win.BN_CLICKED { + replace_text(hwnd) + } + } + + case: + // Find/Replace dialogs use a dynamic window message ID. + if g_find_replace_msg != 0 && msg == g_find_replace_msg { + context = runtime.default_context() + handle_find_replace_message(hwnd, wparam, lparam) + return 0 + } + } + + return win.DefWindowProcW(hwnd, msg, wparam, lparam) +} diff --git a/win32/common_dialogs/print_dialogs.odin b/win32/common_dialogs/print_dialogs.odin new file mode 100644 index 0000000..b3c7474 --- /dev/null +++ b/win32/common_dialogs/print_dialogs.odin @@ -0,0 +1,112 @@ +package comdlg32_example + +import fmt "core:fmt" +import win "core:sys/windows" + +// ==================================================================================== +// Print dialog + +print :: proc(owner: win.HWND) { + pd := win.PRINTDLGW { + lStructSize = size_of(win.PRINTDLGW), + hwndOwner = owner, + Flags = win.PD_USEDEVMODECOPIESANDCOLLATE | win.PD_RETURNDC, + nCopies = 1, + nFromPage = 0xffff, + nToPage = 0xffff, + nMinPage = 1, + nMaxPage = 0xffff, + } + defer if pd.hDevMode != nil { win.GlobalFree(pd.hDevMode) } + defer if pd.hDevNames != nil { win.GlobalFree(pd.hDevNames) } + defer if pd.hDC != nil { win.DeleteDC(pd.hDC) } + success := win.PrintDlgW(&pd) + if success { + fmt.printfln("PrintDlgW confirmed.") + // Do printing with `pd.hDC` here. + } else { + fmt.printfln("PrintDlgW canceled.") + } +} + +// ==================================================================================== +// Print property sheet dialog + +print_properties :: proc(owner: win.HWND) { + page_ranges: [10]win.PRINTPAGERANGE + pd := win.PRINTDLGEXW { + lStructSize = size_of(win.PRINTDLGEXW), + hwndOwner = owner, + Flags = win.PD_COLLATE | win.PD_RETURNDC, + nCopies = 1, + nMinPage = 1, + nMaxPage = 1000, + nPageRanges = 0, + lpPageRanges = raw_data(page_ranges[:]), + nMaxPageRanges = len(page_ranges), + nStartPage = win.START_PAGE_GENERAL, + } + defer if pd.hDevMode != nil { win.GlobalFree(pd.hDevMode) } + defer if pd.hDevNames != nil { win.GlobalFree(pd.hDevNames) } + defer if pd.hDC != nil { win.DeleteDC(pd.hDC) } + hr := win.PrintDlgExW(&pd) + if win.SUCCEEDED(hr) { + fmt.printfln("PrintDlgExW succeeded.") + if pd.dwResultAction == win.PD_RESULT_PRINT { + // Do printing with `pd.hDC` here. + } + } else { + fmt.printfln("PrintDlgExW failed: HRESULT = 0x%8x", hr) + } +} + +// ==================================================================================== +// Page setup dialog + +page_setup :: proc(owner: win.HWND) { + psd := win.PAGESETUPDLGW { + lStructSize = size_of(win.PAGESETUPDLGW), + hwndOwner = owner, + Flags = win.PSD_INTHOUSANDTHSOFINCHES | win.PSD_MARGINS | win.PSD_ENABLEPAGEPAINTHOOK, + rtMargin = { + left = 1250, + top = 1000, + right = 1250, + bottom = 1000, + }, + lpfnPagePaintHook = page_setup_paint_hook, + } + success := win.PageSetupDlgW(&psd) + if success { + fmt.printfln("PageSetupDlgW confirmed: PaperSize = %v; Margin = %v", psd.ptPaperSize, psd.rtMargin) + } else { + fmt.printfln("PageSetupDlgW canceled.") + } +} + +page_setup_paint_hook :: proc "system" (hwnd: win.HWND, msg: win.UINT, wparam: win.WPARAM, lparam: win.LPARAM) -> win.UINT_PTR { + switch msg { + case win.WM_PSD_MARGINRECT: + hdc := cast(win.HDC)wparam + rc := cast(^win.RECT)cast(uintptr)lparam + crMargRect := win.GetSysColor(win.COLOR_HIGHLIGHT) + pen := win.CreatePen(win.PS_DASHDOT, 1, crMargRect) + defer win.DeleteObject(auto_cast pen) + previous_pen := win.SelectObject(hdc, auto_cast pen) + win.Rectangle(hdc, rc.left, rc.top, rc.right, rc.bottom) + if previous_pen != nil { + win.SelectObject(hdc, previous_pen) + } + return cast(win.UINT_PTR)true + case win.WM_PSD_FULLPAGERECT: + hdc := cast(win.HDC)wparam + rc := cast(^win.RECT)cast(uintptr)lparam + brush := win.CreateSolidBrush(win.RGB(255, 0, 0)) + defer win.DeleteObject(auto_cast brush) + win.FillRect(hdc, rc, brush) + return cast(win.UINT_PTR)false + case: + return cast(win.UINT_PTR)false + } + return cast(win.UINT_PTR)true +} diff --git a/win32/common_dialogs/resource.rc b/win32/common_dialogs/resource.rc new file mode 100644 index 0000000..a228c97 --- /dev/null +++ b/win32/common_dialogs/resource.rc @@ -0,0 +1,3 @@ +#include + +1 RT_MANIFEST "app.manifest" From 3bb015e823633ea8155e512d81aad38a0f751a6e Mon Sep 17 00:00:00 2001 From: bplu4t2f Date: Thu, 17 Sep 2026 17:07:59 +0200 Subject: [PATCH 3/6] Add win32/common_dialogs to workflow --- .github/workflows/check.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index e15fe0d..8af5555 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -157,6 +157,7 @@ jobs: odin check win32/game_of_life -target:windows_amd64 $FLAGS odin check win32/open_window -target:windows_amd64 $FLAGS odin check win32/embedded_manifest -target:windows_amd64 $FLAGS + odin check win32/common_dialogs -target:windows_amd64 $FLAGS odin check nanovg/example.odin -file $FLAGS odin check nanovg/fbo.odin -file $FLAGS From dadc1f04f11fbd9052223c28835d7078eff1a396 Mon Sep 17 00:00:00 2001 From: bplu4t2f Date: Thu, 17 Sep 2026 17:53:49 +0200 Subject: [PATCH 4/6] Fix edge cases. --- win32/common_dialogs/find_replace_dialog.odin | 35 +++++++++++++------ win32/common_dialogs/main.odin | 1 + 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/win32/common_dialogs/find_replace_dialog.odin b/win32/common_dialogs/find_replace_dialog.odin index e813fe3..bbe39fc 100644 --- a/win32/common_dialogs/find_replace_dialog.odin +++ b/win32/common_dialogs/find_replace_dialog.odin @@ -14,8 +14,8 @@ g_current_find_replace_window: win.HWND find_replace_ctx :: struct { fr: win.FINDREPLACEW, - find_buf: [dynamic]win.WCHAR, - replace_buf: [dynamic]win.WCHAR, + find_buf: []win.WCHAR, + replace_buf: []win.WCHAR, } find_text :: proc( @@ -38,7 +38,7 @@ find_text :: proc( // by the dialog must survive this procedure call, until the dialog // reports that it is terminating (FR_DIALOGTERM). ctx := new(find_replace_ctx) - ctx.find_buf = make([dynamic]win.WCHAR, max_find_string_length + 1) + ctx.find_buf = make([]win.WCHAR, max_find_string_length + 1) if initial_search_string != "" { conversion_result := win.utf8_to_utf16(ctx.find_buf[:], initial_search_string) @@ -81,8 +81,8 @@ replace_text :: proc( // by the dialog must survive this procedure call, until the dialog // reports that it is terminating (FR_DIALOGTERM). ctx := new(find_replace_ctx) - ctx.find_buf = make([dynamic]win.WCHAR, max_find_string_length + 1) - ctx.replace_buf = make([dynamic]win.WCHAR, max_replace_string_length + 1) + ctx.find_buf = make([]win.WCHAR, max_find_string_length + 1) + ctx.replace_buf = make([]win.WCHAR, max_replace_string_length + 1) if initial_search_string != "" { conversion_result := win.utf8_to_utf16(ctx.find_buf[:], initial_search_string) @@ -112,6 +112,25 @@ replace_text :: proc( } g_current_find_replace_window = win.ReplaceTextW(&ctx.fr) + if g_current_find_replace_window == nil { + // Dialog creation failed. + delete_find_replace_context(ctx) + } +} + +delete_find_replace_context :: proc(ctx: ^find_replace_ctx) { + if ctx == nil { + return + } + if ctx.find_buf != nil { + delete(ctx.find_buf) + ctx.find_buf = nil + } + if ctx.replace_buf != nil { + delete(ctx.replace_buf) + ctx.replace_buf = nil + } + free(ctx) } handle_find_replace_message :: proc(hwnd: win.HWND, wparam: win.WPARAM, lparam: win.LPARAM) { @@ -121,11 +140,7 @@ handle_find_replace_message :: proc(hwnd: win.HWND, wparam: win.WPARAM, lparam: // Terminate dialog. We can free any memory allocated // here for the find/replace dialog, and invalidate any handles. fmt.printfln("Find/Replace dialog closed.") - delete(fr_ctx.find_buf) - fr_ctx.find_buf = nil - delete(fr_ctx.replace_buf) - fr_ctx.replace_buf = nil - free(fr_ctx) + delete_find_replace_context(fr_ctx) g_current_find_replace_window = nil return } diff --git a/win32/common_dialogs/main.odin b/win32/common_dialogs/main.odin index 7854625..ad57426 100644 --- a/win32/common_dialogs/main.odin +++ b/win32/common_dialogs/main.odin @@ -37,6 +37,7 @@ main :: proc() { } win.TranslateMessage(&msg) win.DispatchMessageW(&msg) + free_all(context.temp_allocator) } os.exit(cast(int)msg.wParam) From b083a95f27ba6430d35c1309811506a381da29f3 Mon Sep 17 00:00:00 2001 From: bplu4t2f Date: Thu, 17 Sep 2026 20:41:58 +0200 Subject: [PATCH 5/6] Tighten demo window implementation --- win32/common_dialogs/main.odin | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/win32/common_dialogs/main.odin b/win32/common_dialogs/main.odin index ad57426..4085abd 100644 --- a/win32/common_dialogs/main.odin +++ b/win32/common_dialogs/main.odin @@ -31,6 +31,10 @@ main :: proc() { msg: win.MSG for win.GetMessageW(&msg, nil, 0, 0) > 0 { + if win.IsDialogMessageW(hwnd, &msg) { + // This is a keyboard navigation message targeting the main window. + continue + } if g_current_find_replace_window != nil && win.IsDialogMessageW(g_current_find_replace_window, &msg) { // This is a keyboard navigation message targeting the find/replace window. continue @@ -66,7 +70,7 @@ wndproc :: proc "system" (hwnd: win.HWND, msg: win.UINT, wparam: win.WPARAM, lpa create_button :: proc(parent: win.HWND, font: win.HFONT, x: i32, y: ^i32, id: i32, text: win.LPCWSTR) -> win.HWND { hwnd := win.CreateWindowW("BUTTON", text, - win.WS_VISIBLE | win.WS_CHILD | win.BS_PUSHBUTTON, + win.WS_VISIBLE | win.WS_CHILD | win.WS_TABSTOP | win.BS_PUSHBUTTON, x, y^, 150, 25, parent, cast(win.HMENU)cast(uintptr)id, nil, nil) win.SendMessageW(hwnd, win.WM_SETFONT, cast(uintptr)font, 0) From 12419db4ed28aa614bb97fea20bfea2c7fb71a79 Mon Sep 17 00:00:00 2001 From: bplu4t2f Date: Wed, 30 Sep 2026 10:43:25 +0200 Subject: [PATCH 6/6] Naming style conformance --- win32/common_dialogs/file_dialog.odin | 12 ++++++------ win32/common_dialogs/find_replace_dialog.odin | 10 +++++----- win32/common_dialogs/main.odin | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/win32/common_dialogs/file_dialog.odin b/win32/common_dialogs/file_dialog.odin index d506ff1..2a4448d 100644 --- a/win32/common_dialogs/file_dialog.odin +++ b/win32/common_dialogs/file_dialog.odin @@ -5,12 +5,12 @@ import strings "core:strings" import log "core:log" import win "core:sys/windows" -file_dialog_mode :: enum { +File_Dialog_Mode :: enum { open, save, } -file_dialog_filter :: struct { +File_Dialog_Filter :: struct { // The full line of text displayed to the user in the selection box. // // Examples: @@ -28,13 +28,13 @@ file_dialog_filter :: struct { file_dialog :: proc( owner: win.HWND, - mode: file_dialog_mode, + mode: File_Dialog_Mode, initial_file: Maybe(string) = nil, - filters: []file_dialog_filter = nil, + filters: []File_Dialog_Filter = nil, #any_int selected_filter_index: u32 = 0, dialog_caption: Maybe(string) = nil, initial_directory: Maybe(string) = nil, - allocator: runtime.Allocator = context.temp_allocator, + allocator: runtime.Allocator = context.allocator, ) -> ( dialog_confirmed: bool, selected_file: string, @@ -97,7 +97,7 @@ file_dialog :: proc( // Converts the `filters` slice to the string format required by `OPENFILENAMEW.lpstrFilter`. // // Returns `nil` if `filters` is an empty slice. -file_dialog_build_filter_string :: proc(filters: []file_dialog_filter, allocator: runtime.Allocator = context.temp_allocator) -> win.LPCWSTR { +file_dialog_build_filter_string :: proc(filters: []File_Dialog_Filter, allocator: runtime.Allocator = context.temp_allocator) -> win.LPCWSTR { if len(filters) == 0 { return nil diff --git a/win32/common_dialogs/find_replace_dialog.odin b/win32/common_dialogs/find_replace_dialog.odin index bbe39fc..9c70eb3 100644 --- a/win32/common_dialogs/find_replace_dialog.odin +++ b/win32/common_dialogs/find_replace_dialog.odin @@ -12,7 +12,7 @@ g_find_replace_msg: win.UINT // only one find/replace window can be open at any time. g_current_find_replace_window: win.HWND -find_replace_ctx :: struct { +Find_Replace_Ctx :: struct { fr: win.FINDREPLACEW, find_buf: []win.WCHAR, replace_buf: []win.WCHAR, @@ -37,7 +37,7 @@ find_text :: proc( // This is a modeless dialog, which means the contextual memory required // by the dialog must survive this procedure call, until the dialog // reports that it is terminating (FR_DIALOGTERM). - ctx := new(find_replace_ctx) + ctx := new(Find_Replace_Ctx) ctx.find_buf = make([]win.WCHAR, max_find_string_length + 1) if initial_search_string != "" { @@ -80,7 +80,7 @@ replace_text :: proc( // This is a modeless dialog, which means the contextual memory required // by the dialog must survive this procedure call, until the dialog // reports that it is terminating (FR_DIALOGTERM). - ctx := new(find_replace_ctx) + ctx := new(Find_Replace_Ctx) ctx.find_buf = make([]win.WCHAR, max_find_string_length + 1) ctx.replace_buf = make([]win.WCHAR, max_replace_string_length + 1) @@ -118,7 +118,7 @@ replace_text :: proc( } } -delete_find_replace_context :: proc(ctx: ^find_replace_ctx) { +delete_find_replace_context :: proc(ctx: ^Find_Replace_Ctx) { if ctx == nil { return } @@ -135,7 +135,7 @@ delete_find_replace_context :: proc(ctx: ^find_replace_ctx) { handle_find_replace_message :: proc(hwnd: win.HWND, wparam: win.WPARAM, lparam: win.LPARAM) { fr := cast(^win.FINDREPLACEW)cast(uintptr)lparam - fr_ctx := cast(^find_replace_ctx)cast(uintptr)fr.lCustData + fr_ctx := cast(^Find_Replace_Ctx)cast(uintptr)fr.lCustData if fr.Flags & win.FR_DIALOGTERM != 0 { // Terminate dialog. We can free any memory allocated // here for the find/replace dialog, and invalidate any handles. diff --git a/win32/common_dialogs/main.odin b/win32/common_dialogs/main.odin index 4085abd..65c8585 100644 --- a/win32/common_dialogs/main.odin +++ b/win32/common_dialogs/main.odin @@ -120,7 +120,7 @@ wndproc :: proc "system" (hwnd: win.HWND, msg: win.UINT, wparam: win.WPARAM, lpa case IDC_OPEN_FILE: if nc == win.BN_CLICKED { - dialog_confirmed, result := file_dialog(hwnd, .open) + dialog_confirmed, result := file_dialog(hwnd, .open, allocator = context.temp_allocator) if dialog_confirmed { display_title := get_file_display_name(result) fmt.printfln("Open file dialog confirmed: \"%v\" (Display name: \"%v\")", result, display_title) @@ -131,11 +131,11 @@ wndproc :: proc "system" (hwnd: win.HWND, msg: win.UINT, wparam: win.WPARAM, lpa case IDC_SAVE_FILE: if nc == win.BN_CLICKED { - filters := [?]file_dialog_filter { + filters := [?]File_Dialog_Filter { { display_text = "Text files (*.txt)", filter = "*.txt" }, { display_text = "All files (*.*)", filter = "*.*" }, } - dialog_confirmed, result := file_dialog(hwnd, .save, filters = filters[:]) + dialog_confirmed, result := file_dialog(hwnd, .save, filters = filters[:], allocator = context.temp_allocator) if dialog_confirmed { display_title := get_file_display_name(result) fmt.printfln("Save file dialog confirmed: \"%v\" (Display name: \"%v\")", result, display_title)