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

Method WndProc

src/windows/GuildHeader.cpp:268–579  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

266}
267
268LRESULT CALLBACK GuildHeader::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
269{
270 GuildHeader* pThis = (GuildHeader*)GetWindowLongPtr(hWnd, GWLP_USERDATA);
271 switch (uMsg)
272 {
273 case WM_NCCREATE:
274 {
275 CREATESTRUCT* strct = (CREATESTRUCT*)lParam;
276
277 SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)strct->lpCreateParams);
278
279 break;
280 }
281 case WM_DESTROY:
282 {
283 assert(pThis);
284 pThis->m_hwnd = NULL;
285 SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) NULL);
286 break;
287 }
288 case WM_MOUSEMOVE:
289 case WM_MOUSELEAVE:
290 {
291 assert(pThis);
292 HDC hdc = GetDC(hWnd);
293 if (uMsg == WM_MOUSEMOVE)
294 {
295 TRACKMOUSEEVENT tme;
296 tme.cbSize = sizeof tme;
297 tme.dwFlags = TME_LEAVE;
298 tme.dwHoverTime = 1;
299 tme.hwndTrack = hWnd;
300 ri::TrackMouseEvent(&tme);
301
302 POINT pt = { GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam) };
303 for (auto& button : pThis->m_buttons) {
304 if (pThis->m_bLClickHeld)
305 pThis->CheckClickButton(hdc, button, pt);
306 else
307 pThis->HitTestButton(hdc, button, pt);
308 }
309 }
310 else
311 {
312 POINT pt = { -1, -1 };
313 HDC hdc = GetDC(hWnd);
314 for (auto& button : pThis->m_buttons)
315 {
316 pThis->HitTestButton(hdc, button, pt);
317 pThis->CheckClickButton(hdc, button, pt);
318 }
319
320 pThis->m_bLClickHeld = false;
321 }
322
323 ReleaseDC(hWnd, hdc);
324 break;
325 }

Callers

nothing calls this directly

Calls 15

ScaleByDPIFunction · 0.85
FillGradientFunction · 0.85
GetDiscordInstanceFunction · 0.85
DrawIconInvertFunction · 0.85
IsIconMostlyBlackFunction · 0.85
RectClass · 0.85
CheckClickButtonMethod · 0.80
HitTestButtonMethod · 0.80
GetChannelInfoMethod · 0.80
GetChannelNameMethod · 0.80
CheckReleaseButtonMethod · 0.80

Tested by

no test coverage detected