17.3 逻辑字体
17.3.1 逻辑字体的创建和选择
(1)创建逻辑字体 hFont= CreateFontIndirect(&lf); //其中LOGFONT为结构体
(2)SelectObject(hdc,hFont); //选入并匹配字体或使用从ChooseFont中选择的字体
(3)返回选入设备环境的字体信息:
①GetTextFace(hdc,sizeof(szFaceName)/sizeof(TCHAR),szFaceName);//返回字样名称
②GetTextMetrics(hdc,&tm); //注意:TEXTMETRIC结构体和LOGFONT的不同。
17.3.2 PICKFONT程序
/*----------------------------------------- PICKFONT.C -- Create Logical Font (c) Charles Petzold, 1998 -----------------------------------------*/ #include <windows.h> #include "resource.h" // Structure shared between main window and dialog box typedef struct { int iDevice, iMapMode ; BOOL fMatchAspect ; BOOL fAdvGraphics ; LOGFONT lf ; TEXTMETRIC tm ; TCHAR szFaceName [LF_FULLFACESIZE] ; } DLGPARAMS ; // Formatting for BCHAR fields of TEXTMETRIC structure #ifdef UNICODE #define BCHARFORM TEXT ("0x%04X") #else #define BCHARFORM TEXT ("0x%02X") #endif // Global variables HWND hdlg ; TCHAR szAppName[] = TEXT ("PickFont") ; // Forward declarations of functions LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; BOOL CALLBACK DlgProc (HWND, UINT, WPARAM, LPARAM) ; void SetLogFontFromFields (HWND hdlg, DLGPARAMS * pdp) ; void SetFieldsFromTextMetric (HWND hdlg, DLGPARAMS * pdp) ; void MySetMapMode (HDC hdc, int iMapMode) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = szAppName ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindow (szAppName, TEXT ("PickFont: Create Logical Font"), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { if (hdlg == 0 || !IsDialogMessage (hdlg, &msg)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static DLGPARAMS dp ; static TCHAR szText[] = TEXT ("x41x42x43x44x45 ") TEXT ("x61x62x63x64x65 ") TEXT ("xC0xC1xC2xC3xC4xC5 ") TEXT ("xE0xE1xE2xE3xE4xE5 ") #ifdef UNICODE TEXT ("x0390x0391x0392x0393x0394x0395 ") TEXT ("x03B0x03B1x03B2x03B3x03B4x03B5 ") TEXT ("x0410x0411x0412x0413x0414x0415 ") TEXT ("x0430x0431x0432x0433x0434x0435 ") TEXT ("x5000x5001x5002x5003x5004") #endif ; HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) { case WM_CREATE: dp.iDevice = IDM_DEVICE_SCREEN ; hdlg = CreateDialogParam (((LPCREATESTRUCT) lParam)->hInstance, szAppName, hwnd, DlgProc, (LPARAM) &dp) ; return 0 ; case WM_SETFOCUS: SetFocus (hdlg) ; return 0 ; case WM_COMMAND: switch (LOWORD (wParam)) { case IDM_DEVICE_SCREEN: case IDM_DEVICE_PRINTER: CheckMenuItem (GetMenu (hwnd), dp.iDevice, MF_UNCHECKED) ; dp.iDevice = LOWORD (wParam) ; CheckMenuItem (GetMenu (hwnd), dp.iDevice, MF_CHECKED) ; SendMessage (hwnd, WM_COMMAND, IDOK, 0) ; return 0 ; } break ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; // Set graphics mode so escapement works in Windows NT SetGraphicsMode (hdc, dp.fAdvGraphics ? GM_ADVANCED : GM_COMPATIBLE) ; // Set the mapping mode and the mapper flag MySetMapMode (hdc, dp.iMapMode) ; SetMapperFlags (hdc, dp.fMatchAspect) ; // Find the point to begin drawing text GetClientRect (hdlg, &rect) ; rect.bottom += 1 ; DPtoLP (hdc, (PPOINT) &rect, 2) ; // Create and select the font; display the text SelectObject (hdc, CreateFontIndirect (&dp.lf)) ; TextOut (hdc, rect.left, rect.bottom, szText, lstrlen (szText)) ; DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT))) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } BOOL CALLBACK DlgProc (HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) { static DLGPARAMS * pdp ; static PRINTDLG pd = { sizeof (PRINTDLG) } ; HDC hdcDevice ; HFONT hFont ; switch (message) { case WM_INITDIALOG: // Save pointer to dialog-parameters structure in WndProc pdp = (DLGPARAMS *) lParam ; SendDlgItemMessage (hdlg, IDC_LF_FACENAME, EM_LIMITTEXT, LF_FACESIZE - 1, 0) ; CheckRadioButton (hdlg, IDC_OUT_DEFAULT, IDC_OUT_OUTLINE, IDC_OUT_DEFAULT) ; CheckRadioButton (hdlg, IDC_DEFAULT_QUALITY, IDC_PROOF_QUALITY, IDC_DEFAULT_QUALITY) ; CheckRadioButton (hdlg, IDC_DEFAULT_PITCH, IDC_VARIABLE_PITCH, IDC_DEFAULT_PITCH) ; CheckRadioButton (hdlg, IDC_FF_DONTCARE, IDC_FF_DECORATIVE, IDC_FF_DONTCARE) ; CheckRadioButton (hdlg, IDC_MM_TEXT, IDC_MM_LOGTWIPS, IDC_MM_TEXT) ; SendMessage (hdlg, WM_COMMAND, IDOK, 0) ; // fall through case WM_SETFOCUS: SetFocus (GetDlgItem (hdlg, IDC_LF_HEIGHT)) ; return FALSE ; case WM_COMMAND: switch (LOWORD (wParam)) { case IDC_CHARSET_HELP: MessageBox (hdlg, TEXT ("0 = Ansi ") TEXT ("1 = Default ") TEXT ("2 = Symbol ") TEXT ("128 = Shift JIS (Japanese) ") TEXT ("129 = Hangul (Korean) ") TEXT ("130 = Johab (Korean) ") TEXT ("134 = GB 2312 (Simplified Chinese) ") TEXT ("136 = Chinese Big 5 (Traditional Chinese) ") TEXT ("177 = Hebrew ") TEXT ("178 = Arabic ") TEXT ("161 = Greek ") TEXT ("162 = Turkish ") TEXT ("163 = Vietnamese ") TEXT ("204 = Russian ") TEXT ("222 = Thai ") TEXT ("238 = East European ") TEXT ("255 = OEM"), szAppName, MB_OK | MB_ICONINFORMATION) ; return TRUE ; // These radio buttons set the lfOutPrecision field case IDC_OUT_DEFAULT: pdp->lf.lfOutPrecision = OUT_DEFAULT_PRECIS ; return TRUE ; case IDC_OUT_STRING: pdp->lf.lfOutPrecision = OUT_STRING_PRECIS ; return TRUE ; case IDC_OUT_CHARACTER: pdp->lf.lfOutPrecision = OUT_CHARACTER_PRECIS ; return TRUE ; case IDC_OUT_STROKE: pdp->lf.lfOutPrecision = OUT_STROKE_PRECIS ; return TRUE ; 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 ; } }
//resource.h
//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by PickFont.rc // #define IDC_LF_HEIGHT 1000 #define IDC_LF_WIDTH 1001 #define IDC_LF_ESCAPE 1002 #define IDC_LF_ORIENT 1003 #define IDC_LF_WEIGHT 1004 #define IDC_MM_TEXT 1005 #define IDC_MM_LOMETRIC 1006 #define IDC_MM_HIMETRIC 1007 #define IDC_MM_LOENGLISH 1008 #define IDC_MM_HIENGLISH 1009 #define IDC_MM_TWIPS 1010 #define IDC_MM_LOGTWIPS 1011 #define IDC_LF_ITALIC 1012 #define IDC_LF_UNDER 1013 #define IDC_LF_STRIKE 1014 #define IDC_MATCH_ASPECT 1015 #define IDC_ADV_GRAPHICS 1016 #define IDC_LF_CHARSET 1017 #define IDC_CHARSET_HELP 1018 #define IDC_DEFAULT_QUALITY 1019 #define IDC_DRAFT_QUALITY 1020 #define IDC_PROOF_QUALITY 1021 #define IDC_LF_FACENAME 1022 #define IDC_OUT_DEFAULT 1023 #define IDC_OUT_STRING 1024 #define IDC_OUT_CHARACTER 1025 #define IDC_OUT_STROKE 1026 #define IDC_OUT_TT 1027 #define IDC_OUT_DEVICE 1028 #define IDC_OUT_RASTER 1029 #define IDC_OUT_TT_ONLY 1030 #define IDC_OUT_OUTLINE 1031 #define IDC_DEFAULT_PITCH 1032 #define IDC_FIXED_PITCH 1033 #define IDC_VARIABLE_PITCH 1034 #define IDC_FF_DONTCARE 1035 #define IDC_FF_ROMAN 1036 #define IDC_FF_SWISS 1037 #define IDC_FF_MODERN 1038 #define IDC_FF_SCRIPT 1039 #define IDC_FF_DECORATIVE 1040 #define IDC_TM_HEIGHT 1041 #define IDC_TM_ASCENT 1042 #define IDC_TM_DESCENT 1043 #define IDC_TM_INTLEAD 1044 #define IDC_TM_EXTLEAD 1045 #define IDC_TM_AVECHAR 1046 #define IDC_TM_MAXCHAR 1047 #define IDC_TM_WEIGHT 1048 #define IDC_TM_OVERHANG 1049 #define IDC_TM_DIGASPX 1050 #define IDC_TM_DIGASPY 1051 #define IDC_TM_FIRSTCHAR 1052 #define IDC_TM_LASTCHAR 1053 #define IDC_TM_DEFCHAR 1054 #define IDC_TM_BREAKCHAR 1055 #define IDC_TM_ITALIC 1056 #define IDC_TM_UNDER 1057 #define IDC_TM_STRUCK 1058 #define IDC_TM_VARIABLE 1059 #define IDC_TM_VECTOR 1060 #define IDC_TM_TRUETYPE 1061 #define IDC_TM_DEVICE 1062 #define IDC_TM_FAMILY 1063 #define IDC_TM_CHARSET 1064 #define IDC_TM_FACENAME 1065 #define IDM_DEVICE_SCREEN 40001 #define IDM_DEVICE_PRINTER 40002 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 103 #define _APS_NEXT_COMMAND_VALUE 40003 #define _APS_NEXT_CONTROL_VALUE 1066 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif
//PickFont.c
//Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h " END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h"" " "