code_app/modules/twain_user/HGTwainImpl.hpp

74 lines
1.8 KiB
C++
Raw Normal View History

2022-05-03 10:25:52 +00:00
#ifndef __HGTWAINIMPL_HPP__
#define __HGTWAINIMPL_HPP__
#include "HGTwain.h"
#include "../base/HGDll.h"
#include "twain.h"
#include <vector>
struct HGTwainDSImpl
{
HGTwainDSImpl(class HGTwainDSMImpl *dsm)
{
dsmImpl = dsm;
memset(&ds, 0, sizeof(TW_IDENTITY));
open = HGFALSE;
showUI = HGFALSE;
parent = NULL;
func = NULL;
param = NULL;
enable = HGFALSE;
}
class HGTwainDSMImpl* dsmImpl;
TW_IDENTITY ds;
HGBool open;
HGBool showUI;
HWND parent;
HGDSEventFunc func;
2022-05-03 10:25:52 +00:00
HGPointer param;
HGBool enable;
};
class HGTwainDSMImpl
{
public:
HGTwainDSMImpl();
~HGTwainDSMImpl();
HGResult LoadDSM();
HGResult UnloadDSM();
HGResult OpenDSM();
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, HGDSEventFunc func, HGPointer param);
HGResult EnableDS(HGTwainDSImpl* ds, HGBool showUI, HWND parent, HGDSEventFunc func, HGPointer param);
2022-05-03 10:25:52 +00:00
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 WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
private:
static ULONG m_nRefCount;
HGDll m_hDll;
DSMENTRYPROC m_pDSMProc;
TW_IDENTITY m_AppId;
HWND m_hWnd;
HGBool m_DSMOpen;
std::vector<HGTwainDSImpl> m_DSList;
};
#endif /* __HGTWAINIMPL_HPP__ */