|
#pragma once
///////////////////////////////////////////////////////////
//
// component on an apartment thread.
//
class CSaveAsThread
{
public:
// Constructor
CSaveAsThread() ;
// Destructor
virtual ~CSaveAsThread() ;
// Create and start the thread.
BOOL StartThread() ;
// Stop the thread.
void StopThread() ;
// Current thread status
BOOL IsThreadStarted() ;
// public API
//
void SetKeyWnd(HWND hwnd);
void Config(CString &szFilename, SaveType type);
CString GetFilename();
SaveType GetSaveAsType();
// Member variables
protected:
// ID of thread
DWORD m_ThreadId ;
// Handle to thread
HANDLE m_hThread ;
// Event signals thread to continue.
HANDLE m_hComponentReadyEvent ;
// Time to wait before calling WorkerFunction
DWORD m_WaitTime ;
BOOL m_bShouldStopNow;
HWND m_keyhwnd;
CString m_szFilename;
SaveType m_nSaveType;
// Internal helper functions
private:
// Thread procedure
static DWORD WINAPI RealThreadProc(void* pv) ;
// Member thread procedure
DWORD ClassThreadProc() ;
} ;
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here
Addicted to reverse engineering. At work, I am developing business intelligence software in a team of smart people (independent software vendor).
Need a fast Excel generation component? Try
xlsgen.