📄 dlgdemo.c
字号:
if (LOWORD (wParam) == 0xffff)
// Print prop page and message.
wsprintf (szOut, TEXT ("%s \t \t %s"),
szPages[HIWORD (wParam) - ID_BTNPAGE],
(LPTSTR)lParam);
else
// Print property page, control ID, and message.
wsprintf (szOut, TEXT ("%s \t id:%x \t %s"),
szPages[HIWORD (wParam) - ID_BTNPAGE],
LOWORD (wParam), (LPTSTR)lParam);
}
i = SendDlgItemMessage (hWnd, IDC_RPTLIST, LB_ADDSTRING, 0,
(LPARAM)(LPCTSTR)szOut);
if (i != LB_ERR)
SendDlgItemMessage (hWnd, IDC_RPTLIST, LB_SETTOPINDEX, i,
(LPARAM)(LPCTSTR)szOut);
return 0;
}
//----------------------------------------------------------------------
// DoDestroyMain - Process WM_DESTROY message for window.
//
LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
PostQuitMessage (0);
return 0;
}
//======================================================================
// Command handler routines
//----------------------------------------------------------------------
// DoMainCommandOpen - Process File Open command
//
LPARAM DoMainCommandOpen (HWND hWnd, WORD idItem, HWND hwndCtl,
WORD wNotifyCode) {
OPENFILENAME of;
TCHAR szFileName [MAX_PATH] = {0};
const LPTSTR pszOpenFilter = TEXT ("All Documents (*.*)\0*.*\0\0");
TCHAR szOut[128];
INT rc;
// Initialize filename.
szFileName[0] = '\0';
// Initialize File Open structure.
memset (&of, 0, sizeof (of));
of.lStructSize = sizeof (of);
of.hwndOwner = hWnd;
of.lpstrFile = szFileName;
of.nMaxFile = dim(szFileName);
of.lpstrFilter = pszOpenFilter;
of.Flags = 0;
rc = GetOpenFileName (&of);
wsprintf (szOut,
TEXT ("GetOpenFileName returned: %x, filename: %s"),
rc, szFileName);
SendMessage (hWnd, MYMSG_ADDLINE, -1, (LPARAM)szOut);
return 0;
}
//----------------------------------------------------------------------
// DoMainCommandSave - Process File Save command.
//
LPARAM DoMainCommandSave (HWND hWnd, WORD idItem, HWND hwndCtl,
WORD wNotifyCode) {
OPENFILENAME of;
TCHAR szFileName [MAX_PATH] = {0};
const LPTSTR pszOpenFilter = TEXT ("All Documents (*.*)\0*.*\0\0");
TCHAR szOut[128];
INT rc;
// Initialize filename.
szFileName[0] = '\0';
// Initialize File Open structure.
memset (&of, 0, sizeof (of));
of.lStructSize = sizeof (of);
of.hwndOwner = hWnd;
of.lpstrFile = szFileName;
of.nMaxFile = dim(szFileName);
of.lpstrFilter = pszOpenFilter;
of.Flags = 0;
rc = GetSaveFileName (&of);
wsprintf (szOut,
TEXT ("GetSaveFileName returned: %x, filename: %s"),
rc, szFileName);
SendMessage (hWnd, MYMSG_ADDLINE, -1, (LPARAM)szOut);
return 0;
}
//----------------------------------------------------------------------
// DoMainCommandColor - Process File Color command.
//
LPARAM DoMainCommandColor (HWND hWnd, WORD idItem, HWND hwndCtl,
WORD wNotifyCode) {
CHOOSECOLOR cc;
static COLORREF cr[16];
TCHAR szOut[128];
INT rc;
// Initialize color structure.
memset (&cc, 0, sizeof (cc));
memset (&cr, 0, sizeof (cr));
cc.lStructSize = sizeof (cc);
cc.hwndOwner = hWnd;
cc.hInstance = hInst;
cc.rgbResult = RGB (0, 0, 0);
cc.lpCustColors = cr;
cc.Flags = CC_ANYCOLOR;
rc = (lpfnChooseColor) (&cc);
wsprintf (szOut, TEXT ("Choose Color returned: %x, color: %x"),
rc, cc.rgbResult);
SendMessage (hWnd, MYMSG_ADDLINE, -1, (LPARAM)szOut);
return 0;
}
//----------------------------------------------------------------------
// DoMainCommandPrint - Process File Print command.
//
LPARAM DoMainCommandPrint (HWND hWnd, WORD idItem, HWND hwndCtl,
WORD wNotifyCode) {
PRINTDLG pd;
INT rc;
// Initialize print structure.
memset (&pd, 0, sizeof (pd));
pd.cbStruct = sizeof (pd);
pd.hwndOwner = hWnd;
pd.dwFlags = PD_SELECTALLPAGES;
rc = (lpfnPrintDlg) (&pd);
return 0;
}
//----------------------------------------------------------------------
// DoMainCommandShowProp - Process show property sheet command.
//
LPARAM DoMainCommandShowProp(HWND hWnd, WORD idItem, HWND hwndCtl,
WORD wNotifyCode) {
PROPSHEETPAGE psp[5];
PROPSHEETHEADER psh;
INT i;
// Zero all the property page structures.
memset (&psp, 0, sizeof (psp));
// Fill in default values in property page structures.
for (i = 0; i < dim(psp); i++) {
psp[i].dwSize = sizeof (PROPSHEETPAGE);
psp[i].dwFlags = PSP_DEFAULT;
psp[i].hInstance = hInst;
psp[i].lParam = (LPARAM)hWnd;
}
// Set the dialog box templates for each page.
psp[0].pszTemplate = MAKEINTRESOURCE (ID_BTNPAGE);
psp[1].pszTemplate = MAKEINTRESOURCE (ID_EDITPAGE);
psp[2].pszTemplate = MAKEINTRESOURCE (ID_LISTPAGE);
psp[3].pszTemplate = MAKEINTRESOURCE (ID_STATPAGE);
psp[4].pszTemplate = MAKEINTRESOURCE (ID_SCROLLPAGE);
// Set the dialog box procedures for each page.
psp[0].pfnDlgProc = BtnDlgProc;
psp[1].pfnDlgProc = EditDlgProc;
psp[2].pfnDlgProc = ListDlgProc;
psp[3].pfnDlgProc = StaticDlgProc;
psp[4].pfnDlgProc = ScrollDlgProc;
// Initialize property sheet structure.
psh.dwSize = sizeof (PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE;
psh.hwndParent = hWnd;
psh.hInstance = hInst;
psh.pszCaption = TEXT ("Property Sheet Demo");
psh.nPages = dim(psp);
psh.nStartPage = 0;
psh.ppsp = psp;
psh.pfnCallback = 0;
// Create and display property sheet.
i = PropertySheet (&psh);
return 0;
}
//----------------------------------------------------------------------
// DoMainCommandModelessDlg - Process the File Modeless menu command.
//
LPARAM DoMainCommandModeless(HWND hWnd, WORD idItem, HWND hwndCtl,
WORD wNotifyCode) {
// Only create dialog box if not already created.
if (g_hwndMlDlg == 0)
// Use CreateDialog to create modeless dialog box.
g_hwndMlDlg = CreateDialog (hInst, TEXT ("Clearbox"), hWnd,
ModelessDlgProc);
return 0;
}
//----------------------------------------------------------------------
// DoMainCommandExit - Process Program Exit command.
//
LPARAM DoMainCommandExit (HWND hWnd, WORD idItem, HWND hwndCtl,
WORD wNotifyCode) {
SendMessage (hWnd, WM_CLOSE, 0, 0);
return 0;
}
//----------------------------------------------------------------------
// DoMainCommandAbout - Process the Help About menu command.
//
LPARAM DoMainCommandAbout(HWND hWnd, WORD idItem, HWND hwndCtl,
WORD wNotifyCode) {
// Use DialogBox to create modal dialog box.
DialogBox (hInst, TEXT ("aboutbox"), hWnd, AboutDlgProc);
return 0;
}
//======================================================================
// Modeless ClearList dialog box procedure.
//
BOOL CALLBACK ModelessDlgProc (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
switch (wMsg) {
case WM_COMMAND:
switch (LOWORD (wParam)) {
case IDD_CLEAR:
// Send message to list box to clear it.
SendDlgItemMessage (GetWindow (hWnd, GW_OWNER),
IDC_RPTLIST,
LB_RESETCONTENT, 0, 0);
return TRUE;
case IDOK:
case IDCANCEL:
// Modeless dialog boxes can't use EndDialog.
DestroyWindow (hWnd);
// Set hwnd value to zero to indicate that
// the dialog box is destroyed.
g_hwndMlDlg = 0;
return TRUE;
}
break;
}
return FALSE;
}
//======================================================================
// About dialog box procedure
//
BOOL CALLBACK AboutDlgProc (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
switch (wMsg) {
case WM_COMMAND:
switch (LOWORD (wParam)) {
case IDOK:
case IDCANCEL:
EndDialog (hWnd, 0);
return TRUE;
}
break;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -