106 lines
3.1 KiB
C++
106 lines
3.1 KiB
C++
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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_
|