windows-nt/Source/XPSP1/NT/printscan/ui/scanlib/scanproc.h
2020-09-26 16:20:57 +08:00

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