{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
void FindWindowSize (int * pcxWindow, int * pcyWindow)
{
HDC hdcScreen ;
TEXTMETRIC tm ;
hdcScreen = CreateIC (TEXT ("DISPLAY"), NULL, NULL, NULL) ;
GetTextMetrics (hdcScreen, &tm) ;
DeleteDC (hdcScreen) ;
* pcxWindow = 2 * GetSystemMetrics (SM_CXBORDER) +
12 * tm.tmAveCharWidth ;
* pcyWindow = 2 * GetSystemMetrics (SM_CYBORDER) +
GetSystemMetrics (SM_CYCAPTION) +
2 * tm.tmHeight ;
}
LRESULT CALLBACK WndProc ( HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
{
static COLORREF cr, crLast ;
static HDC hdcScreen ;
PAINTSTRUCT ps ;
POINT pt ;
RECT rc ;
TCHAR szBuffer [16] ;
switch (message)
{
case WM_CREATE:
hdcScreen = CreateDC (TEXT ("DISPLAY"), NULL, NULL, NULL) ;
SetTimer (hwnd, ID_TIMER, 100, NULL) ;
return 0 ;
case WM_TIMER:
GetCursorPos (&pt) ;
cr = GetPixel (hdcScreen, pt.x, pt.y) ;
SetPixel (hdcScreen, pt.x, pt.y, 0) ;
if (cr != crLast)
{
crLast = cr ;
InvalidateRect (hwnd, NULL, FALSE) ;
}
return 0 ;
case WM_PAINT:
hd