/** * Draw the head top drawable * \param graphics Graphics context to draw on */ void CHeadTop::Draw(Gdiplus::Graphics *graphics) { /// Calls the original verison CImageDrawable::Draw(graphics); // Draws the left and right eyebrow DrawEyebrow(mPoints[0], mPoints[1], graphics); DrawEyebrow(mPoints[2], mPoints[3], graphics); // Draws the left and right eye DrawEye(mPoints[4], graphics); DrawEye(mPoints[5], graphics); }
/* ‘ункци¤ обработки сообщени¤ окна. * ј–√”ћ≈Ќ“џ: * - дескриптор окна: * HWND hWnd; * - номер сообщени¤: * UINT Msg; * - параметр сообшени¤ ('word parameter'): * WPARAM wParam; * - параметр сообшени¤ ('long parameter'): * LPARAM lParam; * ¬ќ«¬–јўј≈ћќ≈ «Ќј„≈Ќ»≈: * (LRESULT) - в зависимости от сообщени¤. */ LRESULT CALLBACK MyWinFunc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { INT i; HDC hDC; PAINTSTRUCT ps; static INT w, h; switch (Msg) { case WM_SIZE: w = LOWORD(lParam); h = HIWORD(lParam); break; case WM_MOUSEMOVE: InvalidateRect(hWnd, NULL, TRUE); return 0; case WM_PAINT: hDC = BeginPaint(hWnd, &ps); srand(59); for (i = 0; i < 30; i++) DrawEye(hWnd, hDC, rand() % w, rand() % h, 50, 15); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: PostMessage(hWnd, WM_QUIT, 0, 0); return 0; } return DefWindowProc(hWnd, Msg, wParam, lParam); } /* End of 'MyWinFunc' function */
LRESULT CALLBACK MyWinFunc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { INT i; HDC hDC; PAINTSTRUCT ps; static INT w, h; static BITMAP bm; static HBITMAP hBm, hBmLogo; static HDC hMemDC, hMemDCLogo; switch (Msg) { case WM_CREATE: SetTimer(hWnd, 30, 10, NULL); hDC = GetDC(hWnd); hMemDC = CreateCompatibleDC(hDC); ReleaseDC(hWnd, hDC); return 0; case WM_SIZE: w = LOWORD(lParam); h = HIWORD(lParam); if (hBm != NULL) DeleteObject(hBm); hDC = GetDC(hWnd); hBm = CreateCompatibleBitmap(hDC, w, h); ReleaseDC(hWnd, hDC); SelectObject(hMemDC, hBm); SendMessage(hWnd, WM_TIMER, 0, 0); return 0; case WM_TIMER: Rectangle(hMemDC, 0, 0, w + 1, h + 1); srand(59); for (i = 0; i < 100; i++) DrawEye(hWnd, hMemDC, rand() % 1500, rand() % 1000, 30 , 10); SetBkMode(hMemDC, TRANSPARENT); SetTextColor(hMemDC, RGB(255, 0, 0)); TextOut(hMemDC, 30, 30, "30!", 3); InvalidateRect(hWnd, NULL, FALSE); return 0; case WM_PAINT: hDC = BeginPaint(hWnd, &ps); BitBlt(hDC, 0, 0, w, h, hMemDC, 0, 0, SRCCOPY); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: KillTimer(hWnd, 30); DeleteDC(hMemDC); DeleteObject(hBm); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, Msg, wParam, lParam); }
LRESULT CALLBACK MyWindowFunc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { HDC hDC; PAINTSTRUCT ps; POINT pt; static INT w, h; switch (Msg) { case WM_SIZE: w = LOWORD(lParam); h = HIWORD(lParam); if (hBm != NULL) DeleteObject(hBm); hDC = GetDC(hWnd); hBm = CreateCompatibleBitmap(hDC, w, h); ReleaseDC(hWnd, hDC); SelectObject(hMemDC, hBm); SendMessage(hWnd, WM_TIMER, 0, 0); return 0; case WM_MOUSEMOVE: DrawEye(hWnd, 100, 50, 15, 5); InvalidateRect(hWnd, NULL, TRUE); return 0; case WM_PAINT: hDC = BeginPaint(hWnd, &ps); BitBlt(hDC, 0, 0, w, h, hDC, 0, 0, SRCCOPY); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: KillTimer(hWnd, 30); PostMessage(hWnd, WM_QUIT, 0, 0); return 0; case WM_CREATE: SetTimer(hWnd, 30, 10, NULL); return 0; } return DefWindowProc(hWnd, Msg, wParam, lParam); }
/* Window message handle function */ LRESULT CALLBACK MyWinFunc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { INT i; HDC hDC; PAINTSTRUCT ps; static INT w, h; static BITMAP bm; static HBITMAP hBm, hBmLogo; static HDC hMemDC, hMemDCLogo; switch (Msg) { case WM_CREATE: SetTimer(hWnd, 30, 10, NULL); hBmLogo = LoadImage(NULL, "GLOBE.BMP", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); GetObject(hBmLogo, sizeof(bm), &bm); hDC = GetDC(hWnd); hMemDC = CreateCompatibleDC(hDC); hMemDCLogo = CreateCompatibleDC(hDC); SelectObject(hMemDCLogo, hBmLogo); ReleaseDC(hWnd, hDC); return 0; case WM_SIZE: w = LOWORD(lParam); h = HIWORD(lParam); if (hBm != NULL) DeleteObject(hBm); hDC = GetDC(hWnd); hBm = CreateCompatibleBitmap(hDC, w, h); ReleaseDC(hWnd, hDC); SelectObject(hMemDC, hBm); SendMessage(hWnd, WM_TIMER, 0, 0); return 0; case WM_TIMER: Rectangle(hMemDC, 0, 0, w + 1, h + 1); BitBlt(hMemDC, 0, 0, bm.bmWidth, bm.bmHeight, hMemDCLogo, 0, 0, SRCCOPY); DrawEye(hWnd, hMemDC, 100, 100, 50, 15); DrawEye(hWnd, hMemDC, 300, 200, 150, 30); DrawEye(hWnd, hMemDC, 100, 200, 50, 30); DrawEye(hWnd, hMemDC, 400, 200, 130, 30); DrawEye(hWnd, hMemDC, w / 2, h / 2, 80, 15); srand(59); for (i = 0; i < 30; i++) DrawEye(hWnd, hMemDC, rand() % 800, rand() % 700, 30, 8); SetBkMode(hMemDC, TRANSPARENT); SetTextColor(hMemDC, RGB(255, 0, 0)); TextOut(hMemDC, 30, 30, "30!", 3); InvalidateRect(hWnd, NULL, FALSE); return 0; case WM_PAINT: hDC = BeginPaint(hWnd, &ps); BitBlt(hDC, 0, 0, w, h, hMemDC, 0, 0, SRCCOPY); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: KillTimer(hWnd, 30); DeleteDC(hMemDC); DeleteObject(hBm); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, Msg, wParam, lParam); } /* End of 'MyWinFunc' function */