MCPcopy Create free account
hub / github.com/DiscordMessenger/dm / WndProc

Method WndProc

src/windows/LoadingMessage.cpp:89–155  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87}
88
89LRESULT 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

Callers

nothing calls this directly

Calls 1

DrawLoadingMethod · 0.80

Tested by

no test coverage detected