128 lines
4.7 KiB
C++
128 lines
4.7 KiB
C++
/*******************************************************************************
|
|
*
|
|
* (C) COPYRIGHT MICROSOFT CORPORATION, 1998
|
|
*
|
|
* TITLE: SCANPROC.H
|
|
*
|
|
* VERSION: 1.0
|
|
*
|
|
* AUTHOR: ShaunIv
|
|
*
|
|
* DATE: 10/7/1999
|
|
*
|
|
* DESCRIPTION: Scan threads
|
|
*
|
|
*******************************************************************************/
|
|
#ifndef __SCANPROC_H_INCLUDED
|
|
#define __SCANPROC_H_INCLUDED
|
|
|
|
#include "scanntfy.h" // Registered windows messages names
|
|
#include "memdib.h"
|
|
#include "simevent.h"
|
|
#include "itranhlp.h"
|
|
#include "wiadevdp.h"
|
|
|
|
class CScanPreviewThread : public IWiaDataCallback
|
|
{
|
|
private:
|
|
DWORD m_dwIWiaItemCookie;
|
|
HWND m_hwndPreview;
|
|
HWND m_hwndNotify;
|
|
POINT m_ptOrigin;
|
|
SIZE m_sizeResolution;
|
|
SIZE m_sizeExtent;
|
|
UINT m_nMsgBegin;
|
|
UINT m_nMsgEnd;
|
|
UINT m_nMsgProgress;
|
|
CMemoryDib m_sImageData;
|
|
CSimpleEvent m_sCancelEvent;
|
|
|
|
bool m_bFirstTransfer;
|
|
UINT m_nImageSize;
|
|
|
|
private:
|
|
// No implementation
|
|
CScanPreviewThread( const CScanPreviewThread & );
|
|
CScanPreviewThread(void);
|
|
CScanPreviewThread &operator=( const CScanPreviewThread & );
|
|
private:
|
|
|
|
// These interfaces are all private to make sure that nobody tries to instantiate this class directly
|
|
|
|
// Constructor
|
|
CScanPreviewThread(
|
|
DWORD dwIWiaItemCookie, // specifies the entry in the global interface table
|
|
HWND hwndPreview, // handle to the preview window
|
|
HWND hwndNotify, // handle to the window that receives notifications
|
|
const POINT &ptOrigin, // Origin
|
|
const SIZE &sizeResolution, // Resolution
|
|
const SIZE &sizeExtent, // Extent
|
|
const CSimpleEvent &CancelEvent // Cancel event
|
|
);
|
|
// Destructor
|
|
~CScanPreviewThread(void);
|
|
|
|
|
|
static DWORD ThreadProc( LPVOID pParam );
|
|
bool Scan(void);
|
|
HRESULT ScanBandedTransfer( IWiaItem *pIWiaItem );
|
|
public:
|
|
static HANDLE Scan(
|
|
DWORD dwIWiaItemCookie, // specifies the entry in the global interface table
|
|
HWND hwndPreview, // handle to the preview window
|
|
HWND hwndNotify, // handle to the window that receives notifications
|
|
const POINT &ptOrigin, // Origin
|
|
const SIZE &sizeResolution, // Resolution
|
|
const SIZE &sizeExtent, // Extent
|
|
const CSimpleEvent &CancelEvent // Cancel event name
|
|
);
|
|
|
|
public:
|
|
// IUnknown
|
|
STDMETHODIMP QueryInterface( REFIID riid, LPVOID *ppvObject );
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
// IWiaDataCallback
|
|
STDMETHODIMP BandedDataCallback( LONG, LONG, LONG, LONG, LONG, LONG, LONG, PBYTE );
|
|
};
|
|
|
|
|
|
class CScanToFileThread
|
|
{
|
|
private:
|
|
DWORD m_dwIWiaItemCookie;
|
|
HWND m_hwndNotify;
|
|
UINT m_nMsgBegin, m_nMsgEnd, m_nMsgProgress;
|
|
GUID m_guidFormat;
|
|
CSimpleStringWide m_strFilename;
|
|
|
|
private:
|
|
// No implementation
|
|
CScanToFileThread( const CScanToFileThread & );
|
|
CScanToFileThread(void);
|
|
CScanToFileThread &operator=( const CScanToFileThread & );
|
|
private:
|
|
// These interfaces are all private to make sure that nobody tries to instantiate this class directly
|
|
CScanToFileThread(
|
|
DWORD dwIWiaItemCookie, // specifies the entry in the global interface table
|
|
HWND hwndNotify, // handle to the window that receives notifications
|
|
GUID guidFormat, // Image format
|
|
const CSimpleStringWide &strFilename // Filename to save to
|
|
);
|
|
~CScanToFileThread(void);
|
|
|
|
static DWORD ThreadProc( LPVOID pParam );
|
|
bool Scan(void);
|
|
public:
|
|
static HANDLE Scan(
|
|
DWORD dwIWiaItemCookie, // specifies the entry in the global interface table
|
|
HWND hwndNotify, // handle to the window that receives notifications
|
|
GUID guidFormat, // Image format
|
|
const CSimpleStringWide &strFilename // Filename to save to
|
|
);
|
|
};
|
|
|
|
#endif
|
|
|