code_app/modules/twain_user/HGTwainImpl.hpp

74 lines
1.8 KiB
C++

#ifndef __HGTWAINIMPL_HPP__
#define __HGTWAINIMPL_HPP__
#include "HGTwain.h"
#include "../base/HGDll.h"
#include "twain.h"
#include <vector>
#include <map>
struct HGTwainDSImpl
{
HGTwainDSImpl(class HGTwainDSMImpl *dsm)
{
dsmImpl = dsm;
memset(&ds, 0, sizeof(TW_IDENTITY));
open = HGFALSE;
showUI = HGFALSE;
parent = NULL;
enable = HGFALSE;
}
class HGTwainDSMImpl* dsmImpl;
TW_IDENTITY ds;
HGBool open;
HGBool showUI;
HWND parent;
HGBool enable;
};
class HGTwainDSMImpl
{
public:
HGTwainDSMImpl();
~HGTwainDSMImpl();
HGResult LoadDSM();
HGResult UnloadDSM();
HGResult OpenDSM(HWND hwnd, HGDSEventFunc func, HGPointer param);
HGResult CloseDSM();
HGResult GetDSList(HGTwainDSImpl** ds, HGUInt* size);
HGResult GetDefaultDS(HGTwainDSImpl** ds);
HGResult SelectDS(HGTwainDSImpl** ds);
HGResult GetDSName(HGTwainDSImpl* ds, HGChar* name, HGUInt maxLen);
HGResult OpenDS(HGTwainDSImpl* ds);
HGResult CloseDS(HGTwainDSImpl* ds);
HGResult SetCapability(HGTwainDSImpl* ds, HGUInt cap, HGInt value);
HGResult GetCapability(HGTwainDSImpl* ds, HGUInt cap, HGInt* value);
HGResult EnableDSUIOnly(HGTwainDSImpl* ds, HGBool showUI, HWND parent);
HGResult EnableDS(HGTwainDSImpl* ds, HGBool showUI, HWND parent);
HGResult DisableDS(HGTwainDSImpl* ds);
HGResult ImageNativeXfer(HGTwainDSImpl* ds, HGUInt type, HGUInt origin, HGImage* image);
HGResult EndXfer(HGTwainDSImpl* ds, HGUInt* count);
HGResult Reset(HGTwainDSImpl* ds);
private:
void GetIdentity();
static LRESULT CALLBACK NewWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
private:
HGDll m_hDll;
DSMENTRYPROC m_pDSMProc;
TW_IDENTITY m_AppId;
HWND m_hWnd;
static std::map<HWND, HGTwainDSMImpl*> m_mapWnd;
WNDPROC m_oldWndProc;
HGDSEventFunc m_dsEventFunc;
HGPointer m_dsEventParam;
HGBool m_DSMOpen;
std::vector<HGTwainDSImpl> m_DSList;
};
#endif /* __HGTWAINIMPL_HPP__ */