2025-04-27 07:49:33 -04:00

69 lines
2.8 KiB
C++

//--------------------------------------------------------------------------
// dbrepair.h
//--------------------------------------------------------------------------
#pragma once
//--------------------------------------------------------------------------
// REPAIRSTATE
//--------------------------------------------------------------------------
typedef enum tagREPAIRSTATE {
REPAIR_VERIFYING,
REPAIR_FIXING
} REPAIRSTATE;
//--------------------------------------------------------------------------
// CDatabaseRepairUI
//--------------------------------------------------------------------------
class CDatabaseRepairUI : public IUnknown
{
public:
//----------------------------------------------------------------------
// Construction - Destruction
//----------------------------------------------------------------------
CDatabaseRepairUI(void);
~CDatabaseRepairUI(void);
//----------------------------------------------------------------------
// IUnknown Members
//----------------------------------------------------------------------
STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppv) { return(E_NOTIMPL); }
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
//----------------------------------------------------------------------
// CDatabaseRepairUI Members
//----------------------------------------------------------------------
HRESULT Initialize(LPCSTR pszFilePath, DWORD cMax);
HRESULT IncrementProgress(REPAIRSTATE tyState, DWORD cIncrement);
HRESULT SetProgress(REPAIRSTATE tyState, DWORD cCurrent);
HRESULT Reset(REPAIRSTATE tyState, DWORD cMax);
//----------------------------------------------------------------------
// Thread Entry
//----------------------------------------------------------------------
static DWORD ThreadEntry(LPDWORD pdwParam);
static INT_PTR CALLBACK ProgressDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
private:
//----------------------------------------------------------------------
// Private Members
//----------------------------------------------------------------------
void _Update(REPAIRSTATE tyState);
private:
//----------------------------------------------------------------------
// Private Data
//----------------------------------------------------------------------
LONG m_cRef;
LPSTR m_pszFile;
DWORD m_cMax;
DWORD m_cCurrent;
DWORD m_cPercent;
HANDLE m_hThread;
DWORD m_dwThreadId;
HWND m_hwnd;
REPAIRSTATE m_tyState;
HRESULT m_hrResult;
HANDLE m_hEvent;
};