LRESULT CNotePad::OnCommand(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { BOOL bRet = false; int wmId, wmEvent; wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); switch (wmEvent) { case EN_CHANGE: bRet = 1; break; case EN_HSCROLL: bRet = 1; break; } // 分析菜单选择: switch (wmId) { case IDM_ABOUT: DialogBox(m_hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; case ID_NEW: bRet = OnFileNew(hWnd, wParam, lParam); break; case ID_OPEN: bRet = OnFileOpen(hWnd, wParam, lParam); break; case ID_SAVE: bRet = OnFileSave(hWnd, wParam, lParam); break; case ID_SAVEAS: bRet = OnFileSaveAs(hWnd, wParam, lParam); break; case ID_PRINT: bRet = OnFilePrint(hWnd, wParam, lParam); break; case ID_PAGESET: bRet = OnPageSet(hWnd, wParam, lParam); break; case ID_COPY: bRet = OnFileCopy(hWnd, wParam, lParam); break; case ID_PASTE: bRet = OnFilePaste(hWnd, wParam, lParam); break; case ID_COLOR: bRet = OnColor(hWnd, wParam, lParam); break; case ID_FONT: bRet = OnFont(hWnd, wParam, lParam); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); } return bRet; }
/*------------------------------------------------ Dialog procedure --------------------------------------------------*/ INT_PTR CALLBACK PageColorProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch(id) { case IDC_COLBACK: case IDC_COLBACK2: case IDC_COLFORE: #if TC_ENABLE_CLOCKDECORATION case IDC_COLSHADOW: #endif case IDC_FONT: case IDC_FONTSIZE: if(code == CBN_SELCHANGE || code == CBN_EDITCHANGE) { if(id == IDC_FONT) OnFont(hDlg, FALSE); SendPSChanged(hDlg); } break; case IDC_CHKCOLOR: case IDC_CHKCOLOR2: OnCheckColor(hDlg); SendPSChanged(hDlg); break; case IDC_CHOOSECOLBACK: case IDC_CHOOSECOLBACK2: case IDC_CHOOSECOLFORE: #if TC_ENABLE_CLOCKDECORATION case IDC_CHOOSECOLSHADOW: #endif OnChooseColor(hDlg, id); break; #if TC_ENABLE_CLOCKDECORATION case IDC_DECONONE: case IDC_DECOSHADOW: case IDC_DECOBORDER: OnSelectDecoration(hDlg); SendPSChanged(hDlg); break; case IDC_SHADOWRANGE: if(code == EN_CHANGE) SendPSChanged(hDlg); break; #endif case IDC_GRAD1: case IDC_GRAD2: case IDC_FILLTRAY: case IDC_BOLD: case IDC_ITALIC: SendPSChanged(hDlg); break; } return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: MyHelp(GetParent(hDlg), "Color"); break; } return TRUE; case WM_MEASUREITEM: // common/combobox.c OnMeasureItemColorCombo((LPMEASUREITEMSTRUCT)lParam); return TRUE; case WM_DRAWITEM: OnDrawItem(hDlg, (LPDRAWITEMSTRUCT)lParam); return TRUE; case WM_DESTROY: if(m_hfontb) DeleteObject(m_hfontb); if(m_hfonti) DeleteObject(m_hfonti); break; } return FALSE; }
/*------------------------------------------------ Initialize --------------------------------------------------*/ void OnInit(HWND hDlg) { LOGFONT logfont; m_bInit = FALSE; // common/tclang.c SetDialogLanguage(hDlg, "Color", g_hfontDialog); // settings of "background" and "text" InitColor(hDlg); CheckDlgButton(hDlg, IDC_CHKCOLOR, GetMyRegLong(NULL, "UseBackColor", IsXPVisualStyle() ? FALSE : TRUE)); CheckDlgButton(hDlg, IDC_CHKCOLOR2, GetMyRegLong(NULL, "UseBackColor2", FALSE)); CheckRadioButton(hDlg, IDC_GRAD1, IDC_GRAD2, (GetMyRegLong(NULL, "GradDir", 0) == 0) ? IDC_GRAD1 : IDC_GRAD2); CheckDlgButton(hDlg, IDC_FILLTRAY, GetMyRegLong(NULL, "FillTray", FALSE)); EnableDlgItem(hDlg, IDC_FILLTRAY, IsDlgButtonChecked(hDlg, IDC_CHKCOLOR)); OnCheckColor(hDlg); #if TC_ENABLE_CLOCKDECORATION // settings for decoration CheckRadioButton(hDlg, IDC_DECONONE, IDC_DECOBORDER, GetMyRegLong(NULL, "ClockDecoration", 0) + IDC_DECONONE); OnSelectDecoration(hDlg); UpDown_SetBuddy(hDlg, IDC_SHADOWRANGESPIN, IDC_SHADOWRANGE); UpDown_SetRange(hDlg, IDC_SHADOWRANGESPIN, 10, 1); UpDown_SetPos(hDlg, IDC_SHADOWRANGESPIN, GetMyRegLong(NULL, "ShadowRange", 1)); #endif // settings of "font" and "font size" InitFont(hDlg); OnFont(hDlg, TRUE); CheckDlgButton(hDlg, IDC_BOLD, GetMyRegLong(NULL, "Bold", FALSE)); CheckDlgButton(hDlg, IDC_ITALIC, GetMyRegLong(NULL, "Italic", FALSE)); m_hfontb = m_hfonti = NULL; if(g_hfontDialog) { char s[80]; GetObject(g_hfontDialog, sizeof(LOGFONT), &logfont); logfont.lfWeight = FW_BOLD; m_hfontb = CreateFontIndirect(&logfont); SendDlgItemMessage(hDlg, IDC_BOLD, WM_SETFONT, (WPARAM)m_hfontb, 0); logfont.lfWeight = FW_NORMAL; logfont.lfItalic = 1; m_hfonti = CreateFontIndirect(&logfont); SendDlgItemMessage(hDlg, IDC_ITALIC, WM_SETFONT, (WPARAM)m_hfonti, 0); GetDlgItemText(hDlg, IDC_ITALIC, s, 77); strcat(s, " "); SetDlgItemText(hDlg, IDC_ITALIC, s); } m_bInit = TRUE; }