|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// KNOB.H
//
// Defines the Knob Control
//
// Copyright (c) Microsoft Corporation 1997
//
// 12/18/97 David Stewart / dstewart
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef _KNOB_HEADER_
#define _KNOB_HEADER_
#include "windows.h"
#ifdef __cplusplus
extern "C" { #endif
//forward declaration
class CKnob;
//helper functions for global stuff, start up, shut down, etc.
CKnob* GetKnobFromID(HWND hwndParent, int nID); CKnob* GetKnobFromHWND(HWND hwnd);
class CKnob { public: /*
Create a class of the knob */ friend CKnob* CreateKnob(DWORD dwWindowStyle, DWORD dwRange, DWORD dwInitialPosition, int x, int y, int width, int height, HWND hwndParent, int nID, HINSTANCE hInst);
CKnob(); //constructor
~CKnob(); //destructor
HWND GetHWND() {return m_hwnd;} int GetID() {return m_nID;} void SetRange(DWORD dwRange) {m_dwRange = dwRange;} DWORD GetRange() {return m_dwRange;} DWORD GetPosition() {return m_dwCurPosition;}
void SetPosition(DWORD dwPosition, BOOL fNotify);
private: //non-static privates
int m_nID; HWND m_hwnd; int m_nLightX; int m_nLightY; DWORD m_dwRange; DWORD m_dwPosition; DWORD m_dwCurPosition; double m_trackdegree; UINT_PTR m_uFlashTimerID; UINT_PTR m_uTrackTimerID; BOOL m_fDim; BOOL m_fFastKnob;
void OnButtonDown(int x, int y); void OnButtonUp(); BOOL ComputeCursor(int deltaX, int deltaY, int maxdist); void OnMouseMove(int x, int y); void OnTimer(); void OnFlashTimer(); void Draw(HDC hdc); void KMaskBlt(HDC hdcDest, int x, int y, int width, int height, HDC hdcSource, int xs, int ys, HBITMAP hMask, int xm, int xy, DWORD dwDummy);
private: //static stuff for all knobs
static HINSTANCE m_hInst; static DWORD m_dwKnobClassRef; static ATOM m_KnobAtom; static HANDLE m_hbmpKnob; static HANDLE m_hbmpKnobTab; static HANDLE m_hbmpLight; static HANDLE m_hbmpLightBright; static HANDLE m_hbmpLightMask; static int m_nLightWidth; static int m_nLightHeight;
static LRESULT CALLBACK KnobProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); static void CALLBACK TrackProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime); static void CALLBACK FlashProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime); static BOOL InitKnobs(HINSTANCE hInst); static void UninitKnobs(); };
#ifdef __cplusplus
}; #endif
#endif //_KNOB_HEADER_
|