Complete component catalog

Every capability.
One searchable map.

Browse all 46 public capability slices. Each card connects intent to exact C++20 symbols, headers, runnable code, usage guidance, contracts, and automated evidence.

46 capabilities44 examples34 recipes17 tutorials

Showing all 46 capabilities.

Foundation and UI

Foundation and UI

Application and Window

create a Windows app; open a native window.

mwfl::WindowBase mwfl::RunApplication
<mwfl/window.h> <mwfl/application.h>
Foundation and UI

Native Form

build a form; validate input; bind controls.

mwfl::ControlHost mwfl::ValueBinding mwfl::ValidationResult
<mwfl/control_host.h> <mwfl/binding.h>
Contracts and evidence

Rules: controls, model values, and bindings need compatible lifetimes.

Foundation and UI

Responsive Layout

responsive layout; row; column; overlay.

mwfl::Row mwfl::Column mwfl::Overlay mwfl::Stretch
<mwfl/layout.h>
Contracts and evidence

Rules: layout uses DIPs and references already-created HWNDs.

Foundation and UI

Commands

menu; toolbar; keyboard shortcut; shared action.

mwfl::Command mwfl::CommandSet mwfl::Toolbar mwfl::Menu
<mwfl/command.h> <mwfl/command_controls.h> <mwfl/desktop.h>
Contracts and evidence

Rules: Command is the source for text enabled checked visible image and shortcut state; a toolbar borrows its ImageList; rebuild a menu to show a command after removing it.

Tests: mwfl.command</code>, <code>mwfl.modern_api</code>, <code>mwfl.desktop

Foundation and UI

Background UI Update

background worker; update UI from thread; notify window.

mwfl::WindowWakeup
<mwfl/wakeup.h>
Contracts and evidence

Rules: workers never access UI wrappers; TryWake false is normal during shutdown.

Foundation and UI

Desktop Integration

open file; save file; choose folder; clipboard; file drop; window placement.

mwfl::FileDialogOptions mwfl::SavedWindowPlacement
<mwfl/desktop.h>
Foundation and UI

Custom Dialog

custom dialog; modal form; modeless window; resizable dialog.

mwfl::Dialog mwfl::DialogOptions mwfl::DialogCallbacks mwfl::DialogResult
<mwfl/dialog.h>
Contracts and evidence

Rules: the owner HWND is borrowed; the wrapper owns a modeless HWND; callbacks and child controls stay on the creating UI thread.

Tests: mwfl.dialog_native

Foundation and UI

Appearance Accessibility

dark mode; automatic system theme switching; native control themes; menu themes; custom drawing palette; mica; high contrast; accessible name; DPI.

mwfl::AppearanceOptions mwfl::AppearanceState mwfl::AppearancePalette mwfl::ResolveAppearance mwfl::GetWindowAppearance mwfl::ApplyWindowAppearanceBestEffort mwfl::ApplyNativeControlAppearance mwfl::SetAccessibleName
<mwfl/appearance.h> <mwfl/dpi.h>
Contracts and evidence

Rules: WindowBase automatically reapplies its retained appearance after system theme messages; native and third-party visual styles remain best effort; High Contrast takes precedence.

Tests: mwfl.appearance</code>, <code>mwfl.appearance_lifecycle

Foundation and UI

Property Sheet Settings

property sheet; settings pages; Apply OK Cancel; modeless settings.

mwfl::PropertyPage mwfl::PropertySheetModel mwfl::PropertySheetDialog mwfl::PropertySheetResult
<mwfl/property_sheet.h>
Contracts and evidence

Rules: page IDs are stable and nonzero; page HWNDs are borrowed and lazily created; modeless operations stay on the creating UI thread.

Tests: mwfl.property_sheet_model</code>, <code>mwfl.property_sheet_native</code>, <code>mwfl.settings_application_model</code>, <code>mwfl.settings_application_gui

Foundation and UI

Task Dialog

task dialog; confirmation dialog; progress dialog; radio choice; verification checkbox.

mwfl::TaskDialogOptions mwfl::TaskDialogController mwfl::TaskDialogEvent mwfl::TaskDialogResult mwfl::ShowTaskDialog
<mwfl/control_resources.h>
Contracts and evidence

Rules: the owner HWND is borrowed; the controller is callback-scoped and UI-thread-only; keep_open only changes button-close handling.

Tests: mwfl.task_dialog

Foundation and UI

Control Resources

tooltip; balloon tooltip; image list; context menu; popup command.

mwfl::Tooltip mwfl::TooltipOptions mwfl::ImageList mwfl::Menu mwfl::PopupMenuResult
<mwfl/control_resources.h> <mwfl/desktop.h>
Contracts and evidence

Rules: ImageList owns its HIMAGELIST and toolbar borrowing requires it to outlive the toolbar; Tooltip owns text and its HWND but borrows owner and tools; tooltip text does not replace an accessible name.

Tests: mwfl.control_resources_native</code>, <code>mwfl.modern_api</code>, <code>mwfl.desktop

Foundation and UI

Native HWND Host

host a third-party HWND; forward native notifications; manage child focus and resize.

mwfl::NativeHost mwfl::NativeHostStateModel
<mwfl/native_host.h>
Contracts and evidence

Rules: the host owns its container and borrows one direct-child HWND; host and child must share a UI thread and process; Detach does not destroy or reparent.

Tests: mwfl.native_host_model</code>, <code>mwfl.native_host_native

Documents and data

Documents and data

Document State

track an open document; prompt for unsaved changes; coordinate save before close.

mwfl::DocumentState mwfl::DocumentTransition mwfl::UnsavedChangesChoice
<mwfl/document.h>
Contracts and evidence

Rules: applications own contents and perform file I/O; record opened or saved state only after I/O succeeds; the model belongs to the document coordination thread.

Tests: mwfl.document

Documents and data

Multi Document Workspace Model

manage multiple documents; move a document between windows; recently closed documents; active document state.

mwfl::DocumentWorkspaceModel mwfl::DocumentId mwfl::WorkspaceId mwfl::DocumentTransferPlan mwfl::TransferDocument
<mwfl/document_workspace.h>
Contracts and evidence

Rules: UI-thread logical model owns metadata snapshots only; applications own contents undo buffers and page HWNDs keyed by stable DocumentId; Windows paths deduplicate case-insensitively after lexical normalization.

Tests: mwfl.document_workspace</code>, <code>mwfl.document_workspace_gui</code>, <code>mwfl.package_consumer

Documents and data

Active Document Coordination

route a command to the active document; close all documents safely; save dirty documents before shutdown.

mwfl::BuildActiveDocumentCommandProjection mwfl::ApplyActiveDocumentCommandProjection mwfl::RouteActiveDocument mwfl::BuildCoordinatedClosePlan mwfl::CommitCoordinatedCloseAfterSaves mwfl::ExecuteCoordinatedClose
<mwfl/document_coordination.h>
Contracts and evidence

Rules: route stable IDs and never capture document pointers; handlers and save I/O remain application-owned; asynchronous applications finish every planned save before CommitCoordinatedCloseAfterSaves.

Tests: mwfl.document_coordination</code>, <code>mwfl.package_consumer

Documents and data

Document Session Persistence

restore multiple documents; persist workspace sessions; validate changed session files; recover recently closed documents.

mwfl::DocumentSession mwfl::WorkspaceSession mwfl::SaveDocumentSessionAtomic mwfl::LoadDocumentSession mwfl::RestoreWorkspaceSession
<mwfl/document_session.h>
Contracts and evidence

Rules: schema and input sizes are bounded; atomic replacement preserves the previous complete file; unknown extension records are tolerated.

Tests: mwfl.document_session</code>, <code>mwfl.package_consumer

Documents and data

Native Document Tabs

show documents in native tabs; move a document page between windows; route native tab selection; arrange document pages.

mwfl::DocumentTabWorkspaceAdapter mwfl::DocumentPageBinding mwfl::TransferDocumentWithPage
<mwfl/document_tabs.h>
Contracts and evidence

Rules: the adapter borrows all HWNDs; pages share the TabControl parent on the creating UI thread; native item data stores stable integer IDs and never pointers.

Tests: mwfl.document_tabs_native</code>, <code>mwfl.document_workspace_gui</code>, <code>mwfl.package_consumer

Documents and data

Tab Workspace State

track application tabs; keep stable tab identity; synchronize a native tab control.

mwfl::TabWorkspaceModel mwfl::TabId mwfl::TabControl
<mwfl/tab_workspace.h> <mwfl/navigation_controls.h>
Contracts and evidence

Rules: zero is not a valid TabId; the model does not own documents or page HWNDs; returned views expire on mutation.

Tests: mwfl.tab_workspace</code>, <code>mwfl.modern_api

Documents and data

Split Pane Composition

compose two resizable panes; enforce pane minimum sizes; support keyboard splitter movement.

mwfl::Splitter mwfl::SplitterModel mwfl::SplitterNotification
<mwfl/splitter.h>
Contracts and evidence

Rules: positions and constraints are DIPs; the splitter owns its container HWND and borrows direct-child pane HWNDs; attached pane notifications commands and context menus forward to the parent.

Tests: mwfl.splitter</code>, <code>mwfl.splitter_native</code>, <code>mwfl.explorer_gui

Documents and data

Stable Navigation Data

tree with stable item identity; multi-select report view; virtual ListView; sort or label-edit native rows.

mwfl::TreeItemId mwfl::TreeView mwfl::ListItemId mwfl::ListView mwfl::VirtualListModel
<mwfl/navigation_controls.h>
Contracts and evidence

Rules: IDs are unique stable and nonzero; ListView is multi-select unless LVS_SINGLESEL is requested; virtual models are shared and authoritative.

Tests: mwfl.navigation_model</code>, <code>mwfl.navigation_native</code>, <code>mwfl.explorer_model</code>, <code>mwfl.explorer_gui

Documents and data

Typed Selections

associate typed values with native choices; select by application value; avoid unsafe native item pointers.

mwfl::SelectionAdapter mwfl::SelectionEntry
<mwfl/selection.h> <mwfl/controls.h> <mwfl/navigation_controls.h>
Contracts and evidence

Rules: the adapter owns labels and values while the control owns only native labels; the adapter must be the exclusive item mutator; all adapter and control operations stay on the control UI thread.

Tests: mwfl.selection</code>, <code>mwfl.modern_api</code>, <code>mwfl.package_consumer

Documents and data

Unicode Text File

open a text document; save a text document safely; detect an external file change.

mwfl::ReadTextFile mwfl::WriteTextFileAtomic mwfl::TextFile mwfl::FileStamp
<mwfl/text_file.h>
Contracts and evidence

Rules: malformed Unicode is rejected; save uses a flushed sibling temporary and atomic replacement; pass the read FileStamp to detect stale editor content.

Tests: mwfl.text_file

Documents and data

Text Search

find text; replace text; implement an editor find dialog.

mwfl::FindTextMatch mwfl::TextMatchesAt mwfl::ReplaceAllText
<mwfl/text_search.h>
Contracts and evidence

Rules: empty queries never match; whole-word treats letters, digits, and underscore as word characters; replace-all advances after inserted text.

Tests: mwfl.text_search

Documents and data

Text History

undo text edits; redo text edits; track whether undo returned to the saved text.

mwfl::TextHistory
<mwfl/text_history.h>
Contracts and evidence

Rules: history stores bounded snapshots; new edits truncate the redo branch; returned views expire on mutation.

Tests: mwfl.text_history

Documents and data

Recent Files

show recent files; persist recent files; restore editor settings.

mwfl::RecentFileList mwfl::LoadRecentFilesFromRegistry mwfl::SaveRecentFilesToRegistry
<mwfl/recent_files.h>
Contracts and evidence

Rules: root registry handles are borrowed; schema version is validated; paths are deduplicated with Windows case-insensitive comparison.

Tests: mwfl.recent_files

Documents and data

Single Instance

allow only one application instance; forward a file to the existing window; activate an existing application.

mwfl::SingleInstance mwfl::ActivationResult mwfl::ActivationStatus
<mwfl/single_instance.h>
Contracts and evidence

Rules: register only the primary top-level window; activation payloads are bounded copied UTF-16; same-user UIPI access denial is reported.

Tests: mwfl.single_instance

Documents and data

SDI Notepad Reference

build a text editor; build an SDI document application; test a real native application; package a native executable.

mwfl::DocumentState mwfl::CommandSet mwfl::StatusBar mwfl::ReadTextFile mwfl::SingleInstance
<mwfl/document.h> <mwfl/command.h> <mwfl/command_controls.h> <mwfl/text_file.h> <mwfl/single_instance.h>
Contracts and evidence

Rules: start from templates/basic-app; mark document state only after successful I/O; optional preference failures never discard document content.

Tests: mwfl.notepad_gui</code>, <code>mwfl.text_file</code>, <code>mwfl.document</code>, <code>mwfl.package_consumer

Rendering and media

Rendering and media

Direct2D Drawing

Direct2D drawing; DPI-aware canvas; recover rendering resources; export application drawing data.

mwfl::D2DHost mwfl::D2DHostOptions mwfl::D2DRenderContext mwfl::D2DRenderStateModel
<mwfl/d2d_host.h>
Contracts and evidence

Rules: request the d2d package component and link mwfl::d2d; the core target does not link Direct2D; D2DHost owns BeginDraw and EndDraw.

Tests: mwfl.d2d_host_model</code>, <code>mwfl.d2d_host_native</code>, <code>mwfl.drawing_model</code>, <code>mwfl.drawing_gui

Rendering and media

Direct3D Swap Chain

Direct3D rendering; swap chain; on-demand GPU frame; device-loss recovery; WARP fallback.

mwfl::D3DHost mwfl::D3DHostOptions mwfl::D3DFrameContext mwfl::D3DFrameResult mwfl::D3DRenderStateModel
<mwfl/d3d_host.h>
Contracts and evidence

Rules: request the d3d package component and link mwfl::d3d; RenderFrame is on-demand; handle every structured frame status.

Tests: mwfl.d3d_host_model</code>, <code>mwfl.d3d_host_native</code>, <code>mwfl.package_consumer

Rendering and media

Image Viewer

decode an image; image viewer; zoom and pan; fit image; reject huge images; recover a GPU bitmap.

mwfl::DecodedImage mwfl::ImageDecodeOptions mwfl::DecodeImageFile mwfl::ImageViewportModel mwfl::D2DHost
<mwfl/imaging.h> <mwfl/d2d_host.h>
Contracts and evidence

Rules: request imaging and d2d package components; COM must be initialized before WIC decode; default normalized pixel budget is 256 MiB.

Tests: mwfl.imaging_model</code>, <code>mwfl.imaging_decode</code>, <code>mwfl.image_viewer_gui</code>, <code>mwfl.d2d_host_native

Rendering and media

EMF and GDI+

record an enhanced metafile; play an EMF; export PNG with GDI plus; manage GDI plus startup.

mwfl::EnhancedMetafile mwfl::RecordEnhancedMetafile mwfl::PlayEnhancedMetafile mwfl::GdiPlusSession mwfl::ExportGdiPlusPng
<mwfl/graphics.h>
Contracts and evidence

Rules: request the graphics component and link mwfl::graphics; EnhancedMetafile exclusively owns its handle; recording HDC and Graphics are callback scoped.

Tests: mwfl.graphics</code>, <code>mwfl.graphics_interop_gui</code>, <code>mwfl.integration_stress</code>, <code>mwfl.package_consumer

Desktop workflows

Desktop workflows

Tray Application

tray icon; notification area; background utility; balloon notification; Explorer restart.

mwfl::TrayIcon mwfl::TrayIconOptions mwfl::TrayIconEvent mwfl::TrayNotification mwfl::TrayIconStateModel
<mwfl/tray_icon.h>
Contracts and evidence

Rules: use a stable application GUID; the owner HWND and HICON are borrowed; mutations and destruction stay on the creating UI thread.

Tests: mwfl.tray_icon_state</code>, <code>mwfl.tray_icon_native</code>, <code>mwfl.hot_corners_self_test

Desktop workflows

Printing Preview

print a document; build print preview; enumerate printers; cancel printing.

mwfl::PrintPage mwfl::PrintPreviewModel mwfl::PrinterSettings mwfl::PrintJob mwfl::PrintPages
<mwfl/printing.h> <mwfl/printing_native.h> <mwfl/printing_settings.h>
Contracts and evidence

Rules: request the printing component and link mwfl::printing; document and pagination remain printer independent; printer HDCs are borrowed by render callbacks.

Tests: mwfl.printing_model</code>, <code>mwfl.printing_job</code>, <code>mwfl.printing_settings</code>, <code>mwfl.printing_gui

Desktop workflows

OLE Drag and Drop

OLE drag and drop; transfer Unicode text; transfer file lists; custom clipboard format.

mwfl::OleDataObjectBuilder mwfl::CreateOleDropSource mwfl::CreateOleDropTarget mwfl::OleDropTargetRegistration mwfl::DoOleDragDrop
<mwfl/ole_data.h> <mwfl/ole_drag_drop.h>
Contracts and evidence

Rules: request the ole component and link mwfl::ole; run with ComApartment::ole_sta; STGMEDIUM ownership follows COM transfer rules.

Tests: mwfl.ole_data</code>, <code>mwfl.ole_drag_drop</code>, <code>mwfl.ole_drag_drop_gui</code>, <code>mwfl.package_consumer

Desktop workflows

Shell Integration

versioned settings; file association; Jump List; recent documents; taskbar progress.

mwfl::VersionedSettingsStore mwfl::RegisterPerUserFileAssociation mwfl::CommitJumpList mwfl::TaskbarWindowIntegration
<mwfl/settings_store.h> <mwfl/file_association.h> <mwfl/shell_integration.h>
Contracts and evidence

Rules: request the shell component and link mwfl::shell; persistent mutations are explicit per-user and reversible; owner markers prevent removal of foreign registry state.

Tests: mwfl.settings_store</code>, <code>mwfl.file_association</code>, <code>mwfl.shell_integration</code>, <code>mwfl.shell_integration_gui

Desktop workflows

Taskbar and Help

add taskbar thumbnail buttons; register taskbar tabs; recover after Explorer restart; launch contextual Help safely.

mwfl::TaskbarWindowIntegration mwfl::TaskbarThumbnailButton mwfl::HelpRequest mwfl::ValidateHelpRequest mwfl::LaunchHelp
<mwfl/shell_integration.h> <mwfl/help.h>
Contracts and evidence

Rules: request the shell component and link mwfl::shell; taskbar calls stay on the creating STA UI thread; reapply application-owned state after TaskbarCreated.

Tests: mwfl.shell_integration</code>, <code>mwfl.help</code>, <code>mwfl.shell_integration_gui</code>, <code>mwfl.integration_stress

Desktop workflows

Sqlite Viewer

inspect a SQLite database; browse database schema; run read-only SQL; export query results to CSV.

mwfl::TreeView mwfl::ListView mwfl::TextBox mwfl::CommandSet mwfl::ShowOpenFileDialog mwfl::ShowSaveFileDialog
<mwfl/navigation_controls.h> <mwfl/controls.h> <mwfl/command.h> <mwfl/desktop.h>
Contracts and evidence

Rules: WinSQLite remains an application dependency; open user databases read-only; permit one sqlite3_stmt_readonly statement at a time.

Tests: sqlite-viewer.model (external repository)</code>, <code>sqlite-viewer.gui (external repository)

Desktop workflows

Hex Editor

inspect binary files; edit bytes safely; search hexadecimal patterns; interpret selected bytes; save with a backup.

mwfl::NativeControl mwfl::WindowBase mwfl::ShowOpenFileDialog mwfl::ShowSaveFileDialog mwfl::AppearanceState mwfl::EnableFileDrop
<mwfl/controls.h> <mwfl/window.h> <mwfl/desktop.h> <mwfl/appearance.h>
Contracts and evidence

Rules: open files read-only by default; enable overwrite editing only after explicit confirmation; bound whole-file memory to 256 MiB.

Tests: hex-editor.model (external repository)</code>, <code>hex-editor.gui (external repository)

Desktop workflows

File Folder Compare

compare files; compare folders; find changed files; show a side-by-side text diff; copy a verified difference.

mwfl::VirtualListModel mwfl::ListView mwfl::WindowWakeup mwfl::ShowFolderDialog mwfl::SetAccessibleName
<mwfl/navigation_controls.h> <mwfl/async.h> <mwfl/desktop.h> <mwfl/appearance.h>
Contracts and evidence

Rules: perform recursive scans away from the UI thread; handoff progress and results through WindowWakeup; do not follow symbolic links implicitly.

Tests: folder-compare.model (external repository)

Optional workspaces

Optional workspaces

WebView2 Browser

host web content; build a browser; detect missing WebView2 Runtime; recover a WebView2 process.

mwfl::WebView2Host mwfl::WebView2RuntimeInfo mwfl::WebView2InitializationResult mwfl::WebView2HostCallbacks
<mwfl/webview2.h>
Contracts and evidence

Rules: enable MWFL_BUILD_WEBVIEW2 and link mwfl::webview2; SDK 1.0.4129.50 is hash-pinned; operations and callbacks stay on the creating STA thread.

Tests: mwfl.webview2_model</code>, <code>mwfl.webview2_native</code>, <code>mwfl.browser_gui</code>, <code>mwfl.package_consumer

Optional workspaces

PDF Viewer

view local PDF documents; build a tabbed PDF reader; open dropped PDF files; recover a PDF rendering process.

mwfl::WebView2Host mwfl::TabWorkspaceModel mwfl::TabControl mwfl::ShowOpenFileDialog mwfl::EnableFileDrop
<mwfl/webview2.h> <mwfl/tab_workspace.h> <mwfl/navigation_controls.h> <mwfl/desktop.h>
Contracts and evidence

Rules: enable MWFL_BUILD_WEBVIEW2 and initialize STA; PDF paths remain local and become file URIs only after explicit open or drop; the tab model is authoritative.

Tests: pdf-reader.gui (external repository)</code>, <code>mwfl.webview2_native

Optional workspaces

Scintilla Code Editor

build a source editor; host Scintilla; handle editor notifications; search and replace code.

mwfl::ScintillaRuntime mwfl::ScintillaEditor mwfl::ScintillaNotification mwfl::ScintillaTextRange
<mwfl/scintilla.h>
Contracts and evidence

Rules: enable MWFL_BUILD_SCINTILLA link mwfl::scintilla and deploy Scintilla.dll; Scintilla 5.6.5 archives are hash-pinned; public strings convert strictly between UTF-16 and UTF-8.

Tests: mwfl.scintilla_text</code>, <code>mwfl.scintilla_native</code>, <code>mwfl.code_editor_gui</code>, <code>mwfl.package_consumer

Optional workspaces

Markdown Editor

edit Markdown; preview Markdown; syntax color Markdown; build a local-first document editor; compose Scintilla and WebView2.

mwfl::ScintillaEditor mwfl::WebView2Host mwfl::TabWorkspaceModel mwfl::TabControl mwfl::DocumentState mwfl::ReadTextFile mwfl::WriteTextFileAtomic
<mwfl/scintilla.h> <mwfl/webview2.h> <mwfl/tab_workspace.h> <mwfl/navigation_controls.h> <mwfl/document.h> <mwfl/text_file.h>
Contracts and evidence

Rules: enable both MWFL_BUILD_SCINTILLA and MWFL_BUILD_WEBVIEW2; deploy Scintilla.dll and Lexilla.dll beside the executable; the Lexilla Markdown lexer and light/dark palettes stay application-owned.

Tests: markdown-editor.renderer (external repository)

Optional workspaces

Docking Workspace

build an IDE workspace; dock and float tool panels; auto-hide panels; save and restore a docking layout.

mwfl::DockLayoutModel mwfl::DockNativeWorkspaceAdapter mwfl::DockDragSession mwfl::DockPreviewWindow mwfl::DockKeyboardSession mwfl::DockFloatingWindow mwfl::DockAutoHideController mwfl::SaveDockingSessionAtomic
<mwfl/docking_workspace.h> <mwfl/docking_native.h> <mwfl/docking_drag.h> <mwfl/docking_preview.h> <mwfl/docking_keyboard.h> <mwfl/docking_floating.h> <mwfl/docking_auto_hide.h> <mwfl/docking_session.h>
Contracts and evidence

Rules: Windows 10+ and C++20; stable IDs are nonzero and never derived from HWNDs or pointers; the model owns metadata while applications own panel content and HWNDs.

Tests: mwfl.docking_workspace</code>, <code>mwfl.docking_session</code>, <code>mwfl.docking_monitor</code>, <code>mwfl.docking_drag

Optional workspaces

Windows Ribbon

build a Windows Ribbon application; map Ribbon commands; use application modes; show contextual Ribbon state.

mwfl::RibbonCommandModel mwfl::RibbonFrameworkHost mwfl::RibbonCommandBinding mwfl::RibbonRecentItem
<mwfl/ribbon.h>
Contracts and evidence

Rules: request the ribbon component and link mwfl::ribbon; compile UICC resources into the executable; initialize STA on the creating UI thread.

Tests: mwfl.ribbon_model</code>, <code>mwfl.ribbon_native</code>, <code>mwfl.ribbon_workspace_gui</code>, <code>mwfl.package_consumer

Optional workspaces

Legacy MDI

build a traditional MDI application; route an active MDI child; arrange MDI children; close dirty MDI documents.

mwfl::MdiWorkspaceModel mwfl::MdiHost mwfl::MdiChildId mwfl::RouteMdiActiveChild
<mwfl/mdi.h>
Contracts and evidence

Rules: prefer DocumentWorkspaceModel for new products; request the mdi component and link mwfl::mdi; application documents and views remain application owned.

Tests: mwfl.mdi_model</code>, <code>mwfl.mdi_native</code>, <code>mwfl.mdi_workspace_gui</code>, <code>mwfl.package_consumer

CMake composition

Link only what the application uses.

The core target stays small. Rendering, imaging, printing, OLE, Shell, Ribbon, MDI, graphics, WebView2, and Scintilla remain explicit components.

find_package(mwfl CONFIG REQUIRED COMPONENTS printing ole shell)
target_link_libraries(my_app PRIVATE
  mwfl::ui
  mwfl::printing
  mwfl::ole
  mwfl::shell)
All usage paths

From first window to native integration.

These lists are generated from every checked-in recipe and tutorial, so specialized workflows remain discoverable even when one capability card links a broader guide.

0.1.0 official baseline

Build GUI, CLI, Service, and supervised-worker applications from one tested native foundation.

Explore the first official release