| 87 | } |
| 88 | |
| 89 | LRESULT CALLBACK LoadingMessage::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 90 | { |
| 91 | LoadingMessage* pThis = (LoadingMessage*)GetWindowLongPtr(hWnd, GWLP_USERDATA); |
| 92 | |
| 93 | switch (uMsg) |
| 94 | { |
| 95 | case WM_NCCREATE: |
| 96 | { |
| 97 | CREATESTRUCT* strct = (CREATESTRUCT*)lParam; |
| 98 | SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)strct->lpCreateParams); |
| 99 | break; |
| 100 | } |
| 101 | case WM_CREATE: { |
| 102 | int iconSize = GetSystemMetrics(SM_CXICON) * 2; |
| 103 | int iconSizeSm = GetSystemMetrics(SM_CXSMICON); |
| 104 | pThis->m_icon = (HICON)ri::LoadImage(g_hInstance, MAKEINTRESOURCE(DMIC(IDI_ICON)), IMAGE_ICON, iconSize, iconSize, LR_CREATEDIBSECTION | LR_SHARED); |
| 105 | pThis->m_dot_0 = (HICON)ri::LoadImage(g_hInstance, MAKEINTRESOURCE(DMIC(IDI_OFFLINE_SM)), IMAGE_ICON, iconSizeSm, iconSizeSm, LR_CREATEDIBSECTION | LR_SHARED); |
| 106 | pThis->m_dot_1 = (HICON)ri::LoadImage(g_hInstance, MAKEINTRESOURCE(DMIC(IDI_ONLINE_SM)), IMAGE_ICON, iconSizeSm, iconSizeSm, LR_CREATEDIBSECTION | LR_SHARED); |
| 107 | pThis->m_timer_id = SetTimer(hWnd, 0, C_LOADING_ELAPSE, NULL); |
| 108 | break; |
| 109 | } |
| 110 | case WM_TIMER: { |
| 111 | pThis->m_icon_stage = (pThis->m_icon_stage + 1) % C_NUM_LOADING_DOTS; |
| 112 | HDC hdc = GetDC(hWnd); |
| 113 | pThis->DrawLoading(hdc); |
| 114 | ReleaseDC(hWnd, hdc); |
| 115 | break; |
| 116 | } |
| 117 | case WM_DESTROY: { |
| 118 | pThis->m_hwnd = NULL; |
| 119 | if (pThis->m_timer_id) |
| 120 | KillTimer(hWnd, pThis->m_timer_id); |
| 121 | pThis->m_timer_id = 0; |
| 122 | break; |
| 123 | } |
| 124 | case WM_PAINT: { |
| 125 | PAINTSTRUCT ps; |
| 126 | HDC hdc = BeginPaint(hWnd, &ps); |
| 127 | RECT rect{}; |
| 128 | GetClientRect(hWnd, &rect); |
| 129 | |
| 130 | RECT textRect = rect; |
| 131 | textRect.top += MulDiv(textRect.bottom - textRect.top, 3, 4); |
| 132 | HGDIOBJ old = SelectObject(hdc, g_AuthorTextFont); |
| 133 | COLORREF oldClr = SetBkColor(hdc, GetSysColor(COLOR_3DFACE)); |
| 134 | COLORREF oldTClr = SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT)); |
| 135 | |
| 136 | DrawText(hdc, TEXT("Please wait, connecting to Discord..."), -1, &textRect, DT_CENTER); |
| 137 | |
| 138 | SelectObject(hdc, old); |
| 139 | SetTextColor(hdc, oldTClr); |
| 140 | SetBkColor(hdc, oldClr); |
| 141 | |
| 142 | int iconSize = GetSystemMetrics(SM_CXICON) * 2; |
| 143 | int x = (rect.right - rect.left - iconSize) / 2; |
| 144 | int y = (textRect.top - rect.top - iconSize) / 2; |
| 145 | ri::DrawIconEx(hdc, x, y, pThis->m_icon, iconSize, iconSize, 0, NULL, DI_COMPAT | DI_NORMAL); |
| 146 |
nothing calls this directly
no test coverage detected