in TTDQueries/app-sample/slider.cpp [201:259]
LRESULT CALLBACK Slider_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
Slider_Info * const pInfo = GetInfo(hwnd);
switch (uMsg)
{
case WM_CREATE:
return OnCreate(hwnd);
case WM_PAINT:
return OnPaint(hwnd, pInfo);
case WM_NCDESTROY:
return OnNcDestroy(hwnd, pInfo);
case WM_LBUTTONDOWN:
return OnLButtonDown(hwnd, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), pInfo);
case WM_LBUTTONUP:
return OnLButtonUp(hwnd, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), pInfo);
case WM_MOUSEMOVE:
return OnMouseMove(hwnd, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), pInfo);
case WM_ENABLE:
if (wParam == FALSE) // Window is disabled. Stop tracking.
{
return OnReleaseSlider(hwnd, pInfo);
}
break;
case WM_CAPTURECHANGED:
// The window lost focus while the slider was tracking the mouse OR
// the slider released the mouse capture itself.
return OnReleaseSlider(hwnd, pInfo);
// Custom messages
case WM_SLIDER_SET_THUMB_BITMAP:
return OnSetThumbBitmap(hwnd, (WORD)wParam, pInfo);
case WM_SLIDER_SET_BACKGROUND:
return OnSetBackground(hwnd, (HBRUSH)wParam, pInfo);
case WM_SLIDER_SET_MIN_MAX:
return OnSetMinMax(hwnd, (LONG)wParam, (LONG)lParam, pInfo);
case WM_SLIDER_SET_POSITION:
return OnSetPosition(hwnd, (LONG)wParam, pInfo);
case WM_SLIDER_GET_POSITION:
return OnGetPosition(hwnd, pInfo);
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
};