
#pragma once

// GDIThread.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CGDIThread thread

class CGDIThread : public CWinThread
{
public:
	DECLARE_DYNAMIC(CGDIThread)
	CGDIThread(CWnd* pWnd, HDC hDC);

// Attributes
public:
	HDC m_hDC;
	CDC m_dc;
	HANDLE m_hEventKill;
	HANDLE m_hEventDead;
	static HANDLE m_hAnotherDead;

	// options
	int m_nDelay;
	int m_nScrollInc;
	BOOL m_bWaitVRT;

	enum {SCROLL_UP = 1, SCROLL_PAUSE = 0, SCROLL_DOWN = -1};

	static CRITICAL_SECTION m_csGDILock;

// Operations
public:
	void KillThread();
	virtual void SingleStep() = 0;

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CGDIThread)
	//}}AFX_VIRTUAL

// Implementation
public:
	BOOL SetWaitVRT(BOOL bWait = TRUE);
	int SetScrollDirection(int nDirection);
	int SetDelay(int nDelay);
	virtual ~CGDIThread();
	virtual void Delete();

protected:
	virtual BOOL InitInstance();

	// Generated message map functions
	//{{AFX_MSG(CGDIThread)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};
