// Process window messages LRESULT CALLBACK BmpFlasher::WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { // This is a static method, so we don't know which instantiation we're // dealing with. We use Allen Hadden's ([email protected]) suggestion // from a newsgroup to get the pseudo-this. BmpFlasher *_this = (BmpFlasher *) GetWindowLong(hwnd, GWL_USERDATA); switch (iMsg) { case WM_ERASEBKGND: { DoSDKEraseBkGnd2((HDC)wParam, RGB(255,0,0)); return true; } case WM_CTLCOLORSTATIC: { SetBkMode((HDC) wParam, TRANSPARENT); return (DWORD) GetStockObject(NULL_BRUSH); } case WM_TIMER: DestroyWindow(hwnd); break; case WM_CREATE: CentreWindow(hwnd); SetForegroundWindow(hwnd); m_nTimerID = SetTimer(hwnd,1, 200, 0); return 0; case WM_CLOSE: KillTimer(hwnd,m_nTimerID); break; case WM_USER: switch (lParam) { case WM_LBUTTONDBLCLK: case WM_LBUTTONDOWN: case WM_RBUTTONDOWN: case WM_KEYDOWN: case WM_MBUTTONDOWN: DestroyWindow(hwnd); KillTimer(hwnd,m_nTimerID); break; } } return DefWindowProc(hwnd, iMsg, wParam, lParam); }
static LRESULT CALLBACK WndProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam) // second message parameter { switch (uMsg) { case WM_CREATE: // SetTimer(hwnd,10,30000,NULL); SetTimer(hwnd,100,20,NULL); break; case WM_TIMER: if (wParam==100) { SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE); } // if (wParam==10) DestroyWindow(hwnd); case WM_ERASEBKGND: { DoSDKEraseBkGnd2((HDC)wParam, RGB(0,0,0)); return true; } case WM_CTLCOLORSTATIC: { SetBkMode((HDC) wParam, TRANSPARENT); return (LONG_PTR) GetStockObject(NULL_BRUSH); } case WM_DESTROY: KillTimer(hwnd,100); PostQuitMessage (0); break; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } return 0; }