|
- //----------------------------------------------------------------
- // PaintSingleFontFamily - Callback function that draws a font
- //
- int CALLBACK PaintSingleFontFamily (CONST LOGFONT *lplf,
- CONST TEXTMETRIC *lpntm,
- DWORD nFontType, LPARAM lParam) {
- PPAINTFONTINFO ppfi;
- TCHAR szOut[256];
- INT nFontHeight, nPointSize;
- HFONT hFont, hOldFont;
- ppfi = (PPAINTFONTINFO) lParam; // Translate lParam into struct
- // pointer.
- // Create the font from the LOGFONT structure passed.
- hFont = CreateFontIndirect (lplf);
- // Select the font into the device context.
- hOldFont = (HFONT)SelectObject (ppfi->hdc, hFont);
- // Compute font size.
- nPointSize = (lplf->lfHeight * 72) /
- GetDeviceCaps(ppfi->hdc,LOGPIXELSY);
- // Format string and paint on display.
- wsprintf (szOut, TEXT ("%s Point:%d"), lplf->lfFaceName,
- nPointSize);
- ExtTextOut (ppfi->hdc, 25, ppfi->yCurrent, 0, NULL,
- szOut, lstrlen (szOut), NULL);
- // Compute the height of the default font.
- nFontHeight = lpntm->tmHeight + lpntm->tmExternalLeading;
- // Update new draw point.
- ppfi->yCurrent += nFontHeight;
- // Deselect font and delete.
- SelectObject (ppfi->hdc, hOldFont);
- DeleteObject (hFont);
- return 1;
- }
- //================================================================
- // Message handling procedures for MainWindow
- //
- //----------------------------------------------------------------
- // MainWndProc - Callback function for application window
- //
- LRESULT CALLBACK MainWndProc (HWND hWnd, UINT wMsg, WPARAM wParam,
- LPARAM lParam) {
- INT i;
- //
- // Search message list to see if we need to handle this
- // message. If in list, call procedure.
- //
- for (i = 0; i < dim(MainMessages); i++) {
- if (wMsg == MainMessages[i].Code)
- return (*MainMessages[i].Fxn)(hWnd, wMsg, wParam, lParam);
- }
- return DefWindowProc (hWnd, wMsg, wParam, lParam);
- }
- //----------------------------------------------------------------------
- // DoCreateMain - Process WM_CREATE message for window.
- //
- LRESULT DoCreateMain (HWND hWnd, UINT wMsg, WPARAM wParam,
- LPARAM lParam) {
- HDC hdc;
- INT i, rc;
- //Enumerate the available fonts.
- hdc = GetDC (hWnd);
- rc = EnumFontFamilies ((HDC)hdc, (LPTSTR)NULL,
- FontFamilyCallback, 0);
- for (i = 0; i < sFamilyCnt; i++) {
- ffs[i].nNumFonts = 0;
- rc = EnumFontFamilies ((HDC)hdc, ffs[i].szFontFamily,
- EnumSingleFontFamily,
- (LPARAM)(PFONTFAMSTRUCT)&ffs[i]);
- }
- ReleaseDC (hWnd, hdc);
- return 0;
- }
- //---------------------------------------------------------------
- // DoPaintMain - Process WM_PAINT message for window.
- //
- LRESULT DoPaintMain (HWND hWnd, UINT wMsg, WPARAM wParam,
- LPARAM lParam) {
- PAINTSTRUCT ps;
- RECT rect;
- HDC hdc;
- TEXTMETRIC tm;
- INT nFontHeight, i;
- TCHAR szOut[256];
- PAINTFONTINFO pfi;
- GetClientRect (hWnd, &rect);
- hdc = BeginPaint (hWnd, &ps);
- // Get the height of the default font.
- GetTextMetrics (hdc, &tm);
- nFontHeight = tm.tmHeight + tm.tmExternalLeading;
- // Initialize struct that is passed to enumerate function.
- pfi.yCurrent = rect.top;
- pfi.hdc = hdc;
- for (i = 0; i < sFamilyCnt; i++) {
- // Format output string, and paint font family name.
- wsprintf (szOut, TEXT("Family: %s "),
- ffs[i].szFontFamily);
- ExtTextOut (hdc, 5, pfi.yCurrent, 0, NULL,
- szOut, lstrlen (szOut), NULL);
- pfi.yCurrent += nFontHeight;
- // Enumerate each family to draw a sample of that font.
- EnumFontFamilies ((HDC)hdc, ffs[i].szFontFamily,
- PaintSingleFontFamily,
- (LPARAM)&pfi);
- }
- EndPaint (hWnd, &ps);
- return 0;
- }
- //----------------------------------------------------------------
- // DoDestroyMain - Process WM_DESTROY message for window.
- //
- LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam,
- LPARAM lParam) {
- PostQuitMessage (0);
- return 0;
- }
复制代码
一次贴不完,这是后半部分。 |
|