VOID InitOptionsFont(HWND hDlg) { // load up the list of fonts HDC hDC = GetDC(hDlg); CHARFORMAT cf; LOGFONT lf; SendDlgItemMessage(hDlg, IDC_SpnFontSize, UDM_SETRANGE, 0, MAKELONG(72, 6)); lf.lfCharSet = DEFAULT_CHARSET; lf.lfFaceName[0] = TEXT('\0');; lf.lfPitchAndFamily = 0; EnumFontFamiliesEx(hDC, &lf, ListAllFonts, (LPARAM) GetDlgItem(hDlg, IDC_LstFontFace), 0); ReleaseDC(hDlg, hDC); SetDlgItemText(hDlg, IDC_RtfPreview, TEXT("Text Preview ABC abc 123")); // setup the config options RegistryReadFont(&cf); SetDlgItemText(hDlg, IDC_LstFontFace, cf.szFaceName); SetDlgItemBool(hDlg, IDC_ChkFontBold, cf.dwEffects & CFE_BOLD); SetDlgItemBool(hDlg, IDC_ChkFontItalic, cf.dwEffects & CFE_ITALIC); SetDlgItemInt(hDlg, IDC_TxtFontSize, TwipToPoint(cf.yHeight), FALSE); SetDlgItemBool(hDlg, IDC_ChkRevertCAFs, GHCi_Flag_RevertCAFs); SetDlgItemBool(hDlg, IDC_ChkPrintStats, GHCi_Flag_PrintStats); SetDlgItemBool(hDlg, IDC_ChkPrintTypes, GHCi_Flag_PrintTypes); UpdateFontPreview(hDlg); }
INT_PTR CALLBACK OptsDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: CenterDialogInParent(hDlg); InitOptionsFont(hDlg); ComboInitDialog(hDlg,GHCi_Combo_Editor); ComboInitDialog(hDlg,GHCi_Combo_Startup); ComboInitDialog(hDlg,GHCi_Combo_Prompt); break; case WM_COMMAND: { INT Code = HIWORD(wParam); INT Ctrl = LOWORD(wParam); if ((Ctrl == IDC_ChkFontBold && Code == BN_CLICKED) || (Ctrl == IDC_ChkFontItalic && Code == BN_CLICKED) || (Ctrl == IDC_TxtFontSize && Code == EN_CHANGE) || (Ctrl == IDC_LstFontFace && (Code == CBN_EDITCHANGE || Code == CBN_SELCHANGE)) ) UpdateFontPreview(hDlg); switch (LOWORD(wParam)) { case IDOK: { CHARFORMAT cf, prevCf; RegistryReadFont(&prevCf); CalculateFont(hDlg, &cf); if( (StringCmp(cf.szFaceName,prevCf.szFaceName)) || (cf.yHeight != prevCf.yHeight) || (cf.dwEffects != prevCf.dwEffects)) { RegistryWriteFont(&cf); RtfWindowUpdateFont(); } UpdateOptions(hDlg) ; EndDialog(hDlg, TRUE); return (INT_PTR)TRUE; } case IDCANCEL: EndDialog(hDlg, TRUE); return (INT_PTR)TRUE; } } break; } return (INT_PTR)FALSE; }
INT_PTR CALLBACK DisplayOptionsDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HWND hwndPreview; switch(msg) { case WM_INITDIALOG: MakeFontCombo(hwnd, GetDlgItem(hwnd, IDC_FONTLIST)); MakeColourCombo(GetDlgItem(hwnd, IDC_FGCOLCOMBO), crDefault, szTextList, 17); MakeColourCombo(GetDlgItem(hwnd, IDC_BGCOLCOMBO), crDefault, szTextList, 17); SetComboItemHeight(GetDlgItem(hwnd, IDC_FGCOLCOMBO), 14); SetComboItemHeight(GetDlgItem(hwnd, IDC_BGCOLCOMBO), 14); InitSizeList(GetDlgItem(hwnd, IDC_SIZELIST), TEXT("Courier New")); InitHexPreview(GetDlgItem(hwnd, IDC_HEXVIEW_PREVIEW)); // // Subclass the PREVIEW static control so we can custom-draw it // hwndPreview = GetDlgItem(hwnd, IDC_PREVIEW); oldPreviewProc = (WNDPROC)SetWindowLongPtr(hwndPreview, GWLP_WNDPROC, (LONG_PTR)PreviewWndProc); //AddColourListItem(hwnd, IDC_ITEMLIST, -1, HVC_BACKGROUND, TEXT("Background")); AddColourListItem(hwnd, IDC_ITEMLIST, HVC_ADDRESS, HVC_BACKGROUND, TEXT("Address Column")); AddColourListItem(hwnd, IDC_ITEMLIST, HVC_HEXEVEN, HVC_BACKGROUND, TEXT("Hex Odd Columns")); AddColourListItem(hwnd, IDC_ITEMLIST, HVC_HEXODD, HVC_BACKGROUND, TEXT("Hex Even Columns")); AddColourListItem(hwnd, IDC_ITEMLIST, HVC_ASCII, HVC_BACKGROUND, TEXT("Ascii Column")); AddColourListItem(hwnd, IDC_ITEMLIST, HVC_SELECTION, HVC_SELECTION, TEXT("Selected Data")); AddColourListItem(hwnd, IDC_ITEMLIST, HVC_SELECTION, HVC_SELECTION, TEXT("Inactive Selection")); //AddColourListItem(hwnd, IDC_ITEMLIST, -1, HVC_LONGLINE, TEXT("Modified Bytes")); //AddColourListItem(hwnd, IDC_ITEMLIST, HVC_CURRENTLINETEXT, HVC_CURRENTLINE, TEXT("Current Line")); return TRUE; case WM_COMMAND: if(HIWORD(wParam) == LBN_SELCHANGE || HIWORD(wParam) == CBN_SELCHANGE) { int idx; switch(LOWORD(wParam)) { case IDC_ITEMLIST: idx = SendDlgItemMessage(hwnd, IDC_ITEMLIST, LB_GETCURSEL, 0, 0); g_crPreviewFG = HexView_RealiseColour(g_colorItem[idx].fgColor); g_crPreviewBG = HexView_RealiseColour(g_colorItem[idx].bgColor); InvalidateRect(GetDlgItem(hwnd, IDC_PREVIEW), 0, 0); break; case IDC_SIZELIST: case IDC_FONTLIST: UpdateFontPreview(hwnd); break; } } return 0; case WM_MEASUREITEM: // can't do anything here because we haven't created // the fonts yet, so send a manual CB_SETITEMHEIGHT instead return FALSE; } return FALSE; }