//////////////////////////////////////////////////////////////////////////
// Slider.h: Custom slider control.
// 
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//////////////////////////////////////////////////////////////////////////

#pragma once

HRESULT Slider_Init();
HRESULT Slider_Create(HWND hParent, const Rect rc, DWORD_PTR id, HWND *pHwnd);

// Messages
const UINT WM_SLIDER_SET_THUMB_BITMAP = WM_USER + 1;		// wparam = resource id
const UINT WM_SLIDER_SET_BACKGROUND = WM_USER + 2;			// wparam = hbrush
const UINT WM_SLIDER_SET_MIN_MAX = WM_USER + 3;				// wparam = min, lparam = max
const UINT WM_SLIDER_GET_POSITION = WM_USER + 4;			// returns position
const UINT WM_SLIDER_SET_POSITION = WM_USER + 5;			// wparam = position

// Notifications

// lparam = LPNMSLIDER_INFO

const int SLIDER_NOTIFY_SELECT = 0;	
const int SLIDER_NOTIFY_RELEASE = 1;	
const int SLIDER_NOTIFY_DRAG = 2;	

// NMSLIDER_INFO:
// Custom notification structure.

typedef struct tag_NMSLIDER_INFO {
    NMHDR hdr;
    BOOL  bSelected;    
	LONG  position;
} NMSLIDER_INFO, *LPNMSLIDER_INFO;



class Slider : public Control
{
public:

	HRESULT Create(HWND hParent, const Rect& rcSize, DWORD_PTR id);
	HRESULT SetThumbBitmap(UINT nId);
	HRESULT SetBackground(HBRUSH hBackground);
    LONG GetPosition() const;
    HRESULT SetPosition(LONG pos);
    HRESULT SetRange(LONG min, LONG max);
};



