#ifndef __HGTWAINIMPL_HPP__ #define __HGTWAINIMPL_HPP__ #include "HGTwain.h" #include "../base/HGDll.h" #include "twain.h" #include #include 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 m_mapWnd; WNDPROC m_oldWndProc; HGDSEventFunc m_dsEventFunc; HGPointer m_dsEventParam; HGBool m_DSMOpen; std::vector m_DSList; }; #endif /* __HGTWAINIMPL_HPP__ */