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; };
void Actor::SetPosition(const mvector3& p) { m_position = p; OnSetPosition(); }