📄 pickfont.c
字号:
case IDC_OUT_TT:
pdp->lf.lfOutPrecision = OUT_TT_PRECIS ;
return TRUE ;
case IDC_OUT_DEVICE:
pdp->lf.lfOutPrecision = OUT_DEVICE_PRECIS ;
return TRUE ;
case IDC_OUT_RASTER:
pdp->lf.lfOutPrecision = OUT_RASTER_PRECIS ;
return TRUE ;
case IDC_OUT_TT_ONLY:
pdp->lf.lfOutPrecision = OUT_TT_ONLY_PRECIS ;
return TRUE ;
case IDC_OUT_OUTLINE:
pdp->lf.lfOutPrecision = OUT_OUTLINE_PRECIS ;
return TRUE ;
// These three radio buttons set the lfQuality field
case IDC_DEFAULT_QUALITY:
pdp->lf.lfQuality = DEFAULT_QUALITY ;
return TRUE ;
case IDC_DRAFT_QUALITY:
pdp->lf.lfQuality = DRAFT_QUALITY ;
return TRUE ;
case IDC_PROOF_QUALITY:
pdp->lf.lfQuality = PROOF_QUALITY ;
return TRUE ;
// These three radio buttons set the lower nibble
// of the lfPitchAndFamily field
case IDC_DEFAULT_PITCH:
pdp->lf.lfPitchAndFamily = (BYTE)
((0xF0 & pdp->lf.lfPitchAndFamily) | DEFAULT_PITCH) ;
return TRUE ;
case IDC_FIXED_PITCH:
pdp->lf.lfPitchAndFamily = (BYTE)
((0xF0 & pdp->lf.lfPitchAndFamily) | FIXED_PITCH) ;
return TRUE ;
case IDC_VARIABLE_PITCH:
pdp->lf.lfPitchAndFamily = (BYTE)
((0xF0 & pdp->lf.lfPitchAndFamily) | VARIABLE_PITCH) ;
return TRUE ;
// These six radio buttons set the upper nibble
// of the lpPitchAndFamily field
case IDC_FF_DONTCARE:
pdp->lf.lfPitchAndFamily = (BYTE)
((0x0F & pdp->lf.lfPitchAndFamily) | FF_DONTCARE) ;
return TRUE ;
case IDC_FF_ROMAN:
pdp->lf.lfPitchAndFamily = (BYTE)
((0x0F & pdp->lf.lfPitchAndFamily) | FF_ROMAN) ;
return TRUE ;
case IDC_FF_SWISS:
pdp->lf.lfPitchAndFamily = (BYTE)
((0x0F & pdp->lf.lfPitchAndFamily) | FF_SWISS) ;
return TRUE ;
case IDC_FF_MODERN:
pdp->lf.lfPitchAndFamily = (BYTE)
((0x0F & pdp->lf.lfPitchAndFamily) | FF_MODERN) ;
return TRUE ;
case IDC_FF_SCRIPT:
pdp->lf.lfPitchAndFamily = (BYTE)
((0x0F & pdp->lf.lfPitchAndFamily) | FF_SCRIPT) ;
return TRUE ;
case IDC_FF_DECORATIVE:
pdp->lf.lfPitchAndFamily = (BYTE)
((0x0F & pdp->lf.lfPitchAndFamily) | FF_DECORATIVE) ;
return TRUE ;
// Mapping mode:
case IDC_MM_TEXT:
case IDC_MM_LOMETRIC:
case IDC_MM_HIMETRIC:
case IDC_MM_LOENGLISH:
case IDC_MM_HIENGLISH:
case IDC_MM_TWIPS:
case IDC_MM_LOGTWIPS:
pdp->iMapMode = LOWORD (wParam) ;
return TRUE ;
// OK button pressed
// -----------------
case IDOK:
// Get LOGFONT structure
SetLogFontFromFields (hdlg, pdp) ;
// Set Match-Aspect and Advanced Graphics flags
pdp->fMatchAspect = IsDlgButtonChecked (hdlg, IDC_MATCH_ASPECT) ;
pdp->fAdvGraphics = IsDlgButtonChecked (hdlg, IDC_ADV_GRAPHICS) ;
// Get Information Context
if (pdp->iDevice == IDM_DEVICE_SCREEN)
{
hdcDevice = CreateIC (TEXT ("DISPLAY"), NULL, NULL, NULL) ;
}
else
{
pd.hwndOwner = hdlg ;
pd.Flags = PD_RETURNDEFAULT | PD_RETURNIC ;
pd.hDevNames = NULL ;
pd.hDevMode = NULL ;
PrintDlg (&pd) ;
hdcDevice = pd.hDC ;
}
// Set the mapping mode and the mapper flag
MySetMapMode (hdcDevice, pdp->iMapMode) ;
SetMapperFlags (hdcDevice, pdp->fMatchAspect) ;
// Create font and select it into IC
hFont = CreateFontIndirect (&pdp->lf) ;
SelectObject (hdcDevice, hFont) ;
// Get the text metrics and face name
GetTextMetrics (hdcDevice, &pdp->tm) ;
GetTextFace (hdcDevice, LF_FULLFACESIZE, pdp->szFaceName) ;
DeleteDC (hdcDevice) ;
DeleteObject (hFont) ;
// Update dialog fields and invalidate main window
SetFieldsFromTextMetric (hdlg, pdp) ;
InvalidateRect (GetParent (hdlg), NULL, TRUE) ;
return TRUE ;
}
break ;
}
return FALSE ;
}
void SetLogFontFromFields (HWND hdlg, DLGPARAMS * pdp)
{
pdp->lf.lfHeight = GetDlgItemInt (hdlg, IDC_LF_HEIGHT, NULL, TRUE) ;
pdp->lf.lfWidth = GetDlgItemInt (hdlg, IDC_LF_WIDTH, NULL, TRUE) ;
pdp->lf.lfEscapement = GetDlgItemInt (hdlg, IDC_LF_ESCAPE, NULL, TRUE) ;
pdp->lf.lfOrientation = GetDlgItemInt (hdlg, IDC_LF_ORIENT, NULL, TRUE) ;
pdp->lf.lfWeight = GetDlgItemInt (hdlg, IDC_LF_WEIGHT, NULL, TRUE) ;
pdp->lf.lfCharSet = GetDlgItemInt (hdlg, IDC_LF_CHARSET, NULL, FALSE) ;
pdp->lf.lfItalic =
IsDlgButtonChecked (hdlg, IDC_LF_ITALIC) == BST_CHECKED ;
pdp->lf.lfUnderline =
IsDlgButtonChecked (hdlg, IDC_LF_UNDER) == BST_CHECKED ;
pdp->lf.lfStrikeOut =
IsDlgButtonChecked (hdlg, IDC_LF_STRIKE) == BST_CHECKED ;
GetDlgItemText (hdlg, IDC_LF_FACENAME, pdp->lf.lfFaceName, LF_FACESIZE) ;
}
void SetFieldsFromTextMetric (HWND hdlg, DLGPARAMS * pdp)
{
TCHAR szBuffer [10] ;
TCHAR * szYes = TEXT ("Yes") ;
TCHAR * szNo = TEXT ("No") ;
TCHAR * szFamily [] = { TEXT ("Don't Know"), TEXT ("Roman"),
TEXT ("Swiss"), TEXT ("Modern"),
TEXT ("Script"), TEXT ("Decorative"),
TEXT ("Undefined") } ;
SetDlgItemInt (hdlg, IDC_TM_HEIGHT, pdp->tm.tmHeight, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_ASCENT, pdp->tm.tmAscent, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_DESCENT, pdp->tm.tmDescent, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_INTLEAD, pdp->tm.tmInternalLeading, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_EXTLEAD, pdp->tm.tmExternalLeading, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_AVECHAR, pdp->tm.tmAveCharWidth, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_MAXCHAR, pdp->tm.tmMaxCharWidth, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_WEIGHT, pdp->tm.tmWeight, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_OVERHANG, pdp->tm.tmOverhang, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_DIGASPX, pdp->tm.tmDigitizedAspectX, TRUE) ;
SetDlgItemInt (hdlg, IDC_TM_DIGASPY, pdp->tm.tmDigitizedAspectY, TRUE) ;
wsprintf (szBuffer, BCHARFORM, pdp->tm.tmFirstChar) ;
SetDlgItemText (hdlg, IDC_TM_FIRSTCHAR, szBuffer) ;
wsprintf (szBuffer, BCHARFORM, pdp->tm.tmLastChar) ;
SetDlgItemText (hdlg, IDC_TM_LASTCHAR, szBuffer) ;
wsprintf (szBuffer, BCHARFORM, pdp->tm.tmDefaultChar) ;
SetDlgItemText (hdlg, IDC_TM_DEFCHAR, szBuffer) ;
wsprintf (szBuffer, BCHARFORM, pdp->tm.tmBreakChar) ;
SetDlgItemText (hdlg, IDC_TM_BREAKCHAR, szBuffer) ;
SetDlgItemText (hdlg, IDC_TM_ITALIC, pdp->tm.tmItalic ? szYes : szNo) ;
SetDlgItemText (hdlg, IDC_TM_UNDER, pdp->tm.tmUnderlined ? szYes : szNo) ;
SetDlgItemText (hdlg, IDC_TM_STRUCK, pdp->tm.tmStruckOut ? szYes : szNo) ;
SetDlgItemText (hdlg, IDC_TM_VARIABLE,
TMPF_FIXED_PITCH & pdp->tm.tmPitchAndFamily ? szYes : szNo) ;
SetDlgItemText (hdlg, IDC_TM_VECTOR,
TMPF_VECTOR & pdp->tm.tmPitchAndFamily ? szYes : szNo) ;
SetDlgItemText (hdlg, IDC_TM_TRUETYPE,
TMPF_TRUETYPE & pdp->tm.tmPitchAndFamily ? szYes : szNo) ;
SetDlgItemText (hdlg, IDC_TM_DEVICE,
TMPF_DEVICE & pdp->tm.tmPitchAndFamily ? szYes : szNo) ;
SetDlgItemText (hdlg, IDC_TM_FAMILY,
szFamily [min (6, pdp->tm.tmPitchAndFamily >> 4)]) ;
SetDlgItemInt (hdlg, IDC_TM_CHARSET, pdp->tm.tmCharSet, FALSE) ;
SetDlgItemText (hdlg, IDC_TM_FACENAME, pdp->szFaceName) ;
}
void MySetMapMode (HDC hdc, int iMapMode)
{
switch (iMapMode)
{
case IDC_MM_TEXT: SetMapMode (hdc, MM_TEXT) ; break ;
case IDC_MM_LOMETRIC: SetMapMode (hdc, MM_LOMETRIC) ; break ;
case IDC_MM_HIMETRIC: SetMapMode (hdc, MM_HIMETRIC) ; break ;
case IDC_MM_LOENGLISH: SetMapMode (hdc, MM_LOENGLISH) ; break ;
case IDC_MM_HIENGLISH: SetMapMode (hdc, MM_HIENGLISH) ; break ;
case IDC_MM_TWIPS: SetMapMode (hdc, MM_TWIPS) ; break ;
case IDC_MM_LOGTWIPS:
SetMapMode (hdc, MM_ANISOTROPIC) ;
SetWindowExtEx (hdc, 1440, 1440, NULL) ;
SetViewportExtEx (hdc, GetDeviceCaps (hdc, LOGPIXELSX),
GetDeviceCaps (hdc, LOGPIXELSY), NULL) ;
break ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -