Modal dialogs, built on the native Win32 dialog manager.
Dialog is a real dialog-class window (#32770): it is created from an
in-memory dialog template with CreateDialogIndirectParamW (the runtime
equivalent of an .rcDIALOGEX resource) and driven through
IsDialogMessageW/DefDlgProc. Using the genuine dialog construct means the
OS gives us the things a screen reader and keyboard user need, for free:
- oleacc reports the window as ROLE_SYSTEM_DIALOG, so JAWS and NVDA announce
it as a dialog on open and read its child controls as dialog contents — no
custom IAccessible proxy or role annotation required.
- The dialog manager handles Tab/Shift+Tab and arrow-key groups, maps Escape
to Cancel and Enter to the default button, and tracks the default push
button — all natively.
Content is arranged with a sizer; addStandardButtons appends a right-aligned
OK/Cancel-style button row wired to dismiss the dialog with the matching
DialogResult. Controls are ordinary child windows parented to the dialog.
Modal dialogs, built on the native Win32 dialog manager.
Dialog is a real dialog-class window (#32770): it is created from an in-memory dialog template with CreateDialogIndirectParamW (the runtime equivalent of an .rc DIALOGEX resource) and driven through IsDialogMessageW/DefDlgProc. Using the genuine dialog construct means the OS gives us the things a screen reader and keyboard user need, for free:
- oleacc reports the window as ROLE_SYSTEM_DIALOG, so JAWS and NVDA announce it as a dialog on open and read its child controls as dialog contents — no custom IAccessible proxy or role annotation required. - The dialog manager handles Tab/Shift+Tab and arrow-key groups, maps Escape to Cancel and Enter to the default button, and tracks the default push button — all natively.
Content is arranged with a sizer; addStandardButtons appends a right-aligned OK/Cancel-style button row wired to dismiss the dialog with the matching DialogResult. Controls are ordinary child windows parented to the dialog.