108 lines
2.4 KiB
C
108 lines
2.4 KiB
C
|
/* (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 <grgbStatusColor> is.
|
||
|
*
|
||
|
* Borrowed from ToddLa (with many, many modifications).
|
||
|
*/
|
||
|
|
||
|
#include "nocrap.h"
|
||
|
#include <windows.h>
|
||
|
#include <mmsystem.h>
|
||
|
#include <mmreg.h>
|
||
|
#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);
|
||
|
}
|