COMdlg32 Library - Common Dialog Functions
The COMdlg32 library provides functions for common dialog boxes, which are standard dialog boxes used in Windows applications to perform common tasks such as opening files, saving files, selecting fonts, and choosing colors. These dialogs simplify application development by providing a consistent user interface.
Overview
The Common Dialog Library (COMdlg32.dll) offers a set of well-defined functions that encapsulate the functionality of standard Windows dialogs. Instead of implementing these complex UI elements from scratch, developers can leverage these functions to quickly integrate standard dialogs into their applications.
Key Dialog Types
- File Operations: Open File, Save File, Save As
- Font Selection: Font dialog
- Color Selection: Color dialog
- Printer Operations: Print dialog, Print Setup dialog
- Page Setup: Page Setup dialog
Commonly Used Functions
Function Name | Description |
---|---|
ChooseColor |
Displays the system color picker dialog box. |
ChooseFont |
Displays the system font picker dialog box. |
CommDlgExtendedError |
Retrieves the last extended error code for common dialog functions. |
FindText |
Displays the Find dialog box. |
GetFileTitle |
Retrieves the title (file name without extension) of a file. |
PageSetupDlg |
Initializes or displays the Page Setup dialog box. |
PrintDlg |
Displays the Print dialog box. |
PrintDlgEx |
Displays an extended Print dialog box. |
ReplaceText |
Displays the Replace dialog box. |
SetCommDefaultExtWinProc |
Sets the default extended window procedure for common dialogs. |
Example: Using ChooseColor
Here's a conceptual example of how you might use the ChooseColor
function in C++:
#include <Windows.h>
#include <CommDlg.h>
// ... inside your application code ...
CHOOSECOLOR cc;
static COLORREF acrCustClr[16];
HCOLORCHOOSER hChooser = NULL;
ZeroMemory(&cc, sizeof(cc));
cc.lStructSize = sizeof(CHOOSECOLOR);
cc.hwndOwner = GetActiveWindow();
cc.lpCustColors = (LPCSTR)acrCustClr;
cc.rgbInit = 0x00000000; // Initialize to black
cc.Flags = CC_FULLOPEN | CC_RGBINIT;
if (ChooseColor(&cc))
{
COLORREF selectedColor = cc.rgbResult;
// Use the selectedColor for your application
// For example, change a window background color
SetClassLongPtr(GetActiveWindow(), GCLP_HBRBACKGROUND, (LONG_PTR)CreateSolidBrush(selectedColor));
RedrawWindow(GetActiveWindow(), NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_INTERNALPAINT | RDW_ALLCHILDREN);
}