LRESULT CALLBACK Slider_WndProc()

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;
	};