/* (C) Copyright Microsoft Corporation 1991-1994. All Rights Reserved */ /* Revision History. 4/2/91 LaurieGr (AKA LKG) Ported to WIN32 / WIN16 common code */ /* nftext.c * * Implements the no-flicker static text control ("td_nftext"). * * This is NOT a general-purpose control (see the globals below). * * Note: most NoFlickerText controls use ANSI_VAR_FONT, but the status * control (ID_STATUSTXT) uses the font defined in the dialog box * template (e.g. Helv8). Also, the foreground color of most NoFlickerText * controls is RGB_FGNFTEXT, but the foreground color of the status control * is whatever the current value of is. * * Borrowed from ToddLa (with many, many modifications). */ #include "nocrap.h" #include #include #include #include "soundrec.h" /* statics */ HFONT ghfontDialog = NULL; // font of dialog box void NEAR PASCAL NFTextPaint(HWND hwnd, HDC hdc) { RECT rc; TCHAR ach[128]; int iLen; long lStyle; int xOrigin; GetClientRect(hwnd, &rc); iLen = GetWindowText(hwnd, ach, SIZEOF(ach)); SetTextColor(hdc, grgbStatusColor); SelectObject(hdc, ghfontDialog); SetBkColor(hdc, RGB_BGNFTEXT); lStyle = GetWindowLong(hwnd, GWL_STYLE); { SIZE size; if (lStyle & SS_RIGHT) { GetTextExtentPoint(hdc, ach, iLen, &size); xOrigin = rc.right - size.cx; } else if (lStyle & SS_CENTER) { GetTextExtentPoint(hdc, ach, iLen, &size); xOrigin = (rc.right - size.cx) / 2; } else xOrigin = 0; } ExtTextOut(hdc, xOrigin, 0, ETO_OPAQUE, &rc, ach, iLen, NULL); } INT_PTR CALLBACK NFTextWndProc(HWND hwnd, UINT wMsg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (wMsg) { case WM_SETTEXT: DefWindowProc(hwnd, wMsg, wParam, lParam); hdc = GetDC(hwnd); if (hdc) { NFTextPaint(hwnd, hdc); ReleaseDC(hwnd, hdc); } return 0L; case WM_SETFONT: ghfontDialog = (HFONT)wParam; return 0L; case WM_ERASEBKGND: return 0L; case WM_PAINT: BeginPaint(hwnd, &ps); NFTextPaint(hwnd, ps.hdc); EndPaint(hwnd, &ps); return 0L; } return DefWindowProc(hwnd, wMsg, wParam, lParam); }