亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? imagescanforgood.cpp

?? 圖像掃描類的完整代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif




#ifdef WIN32
#define DSM_FILENAME "TWAIN_32.DLL"
#define DSM_ENTRYPOINT "DSM_Entry"
#else
#define DSM_FILENAME "TWAIN.DLL"
#define DSM_ENTRYPOINT "DSM_ENTRY"
#endif



#define IsValidHandle(h) ((h) != NULL)



#define TRACE_ERROR(e) { if (bTrace) TRACE("TWAIN: Error(%d) ", e); TwainError(e); }



static int iAvailable; // TWAIN available: 0:unknown, -1:No, 1:Yes
static DSMENTRYPROC pSM_Entry; // entry point of Data Source Manager (TWAIN_32.DLL)
static HINSTANCE hSMLib; // handle of SM



// default application identity structure:
const TW_IDENTITY DefAppId = {
0, // Id, filled in by SM
{ 1, 0, TWLG_USA, TWCY_USA, "OSM"}, // Version
TWON_PROTOCOLMAJOR,
TWON_PROTOCOLMINOR,
DG_IMAGE | DG_CONTROL,
"OSM", // Mfg
"OSM", // Family
"OSM" // Product
};
static TW_IDENTITY SourceId; // source identity structure




// CTwain class members
CTwain::CTwain(void)
: pDefWnd(NULL), nState(NO_TWAIN_STATE)
{
bShowUI = TRUE;
hDib = NULL;
rc = TWRC_SUCCESS;
// turn off if you get tired of seeing the output:
bTrace = TRUE;



AppId = DefAppId; // provide default registration
SetState(PRE_SESSION);



iAvailable= 0;//-1;
pSM_Entry = NULL;
hSMLib = NULL;
}



//注冊應用信息 
void CTwain::RegisterApp( // record application information
int nMajorNum, int nMinorNum, // major and incremental revision of application. E.g.
// for version 2.1, nMajorNum == 2 and nMinorNum == 1
int nLanguage, // language of this version (use TWLG_xxx from TWAIN.H)
int nCountry, // country of this version (use TWCY_xxx from TWAIN.H)
LPSTR lpszVersion, // version info string e.g. "1.0b3 Beta release"
LPSTR lpszMfg, // name of manufacturer/developer e.g. "Crazbat Software"
LPSTR lpszFamily, // product family e.g. "BitStomper"
LPSTR lpszProduct) // specific product e.g. "BitStomper Deluxe Pro"
{
AppId.Id = 0; // init to 0, but Source Manager will assign real value
AppId.Version.MajorNum = nMajorNum;
AppId.Version.MinorNum = nMinorNum;
AppId.Version.Language = nLanguage;
AppId.Version.Country = nCountry;
lstrcpy (AppId.Version.Info, lpszVersion);



AppId.ProtocolMajor = TWON_PROTOCOLMAJOR;
AppId.ProtocolMinor = TWON_PROTOCOLMINOR;
AppId.SupportedGroups = DG_IMAGE | DG_CONTROL;
lstrcpy (AppId.Manufacturer, lpszMfg);
lstrcpy (AppId.ProductFamily, lpszFamily);
lstrcpy (AppId.ProductName, lpszProduct);
}



CTwain::~CTwain()
{
// shut down the Twain connection
CloseSourceManager();
UnloadSourceManager();
}



//
int CTwain::TwainAvailable(void)
{
if (pSM_Entry) return TRUE; // SM currently loaded



if (iAvailable == 0) {
if (LoadSourceManager()) {
iAvailable = 1;
} else {
iAvailable = -1;
}
}
return (iAvailable > 0);
}



//掃描狀態 
TW_STATE CTwain::State(void)
{
return nState;
}



//設置掃描狀態 
void CTwain::SetState(TW_STATE nS)
{
#ifdef _DEBUG
if (bTrace) {
const char *pzState[] = {
"",
"1:PRE_SESSION",
"2:SOURCE_MANAGER_LOADED",
"3:SOURCE_MANAGER_OPEN",
"4:SOURCE_OPEN",
"5:SOURCE_ENABLED",
"6:TRANSFER_READY",
"7:TRANSFERRING"
};
TRACE("TWAIN: State %s -> %s ", pzState[nState], pzState[nS]);
}
#endif



nState = nS; // update the 'global'
StateChange(nS); // notify derived classes via callback
} // SetState




void CTwain::SetDefWindow(CWnd* pWnd)
// Sets the CWnd* to be used as the default for all other calls that
// take a window argument - SelectSource, OpenSourceManager, etc.
// If no default window is set, AfxGetMainWnd() is used.
{
pDefWnd = pWnd;
}




CWnd* CTwain::DefWnd(CWnd* pWnd)
// Returns pWnd if it's non-null, otherwise it
// finds a safe non-null default substitute.
{
return pWnd ? pWnd : pDefWnd ? pDefWnd : AfxGetMainWnd();
} // DefWnd



//選擇掃描源 
int CTwain::SelectSource(CWnd* pWnd)
{
TW_IDENTITY NewSourceId;
TW_STATE nStartState = State();
int bSuccess = FALSE;



pWnd = DefWnd(pWnd);
if (!OpenSourceManager(pWnd)) {
TRACE_ERROR(TWERR_OPEN_DSM);
//"Unable to load & open TWAIN Source Manager");
} else {
// I will settle for the system default. Shouldn't I get a highlight
// on system default without this call?
SM(DG_CONTROL, DAT_IDENTITY, MSG_GETDEFAULT, &NewSourceId);
// now do the real thing
bSuccess = SM(DG_CONTROL, DAT_IDENTITY, MSG_USERSELECT, &NewSourceId);
}



DropToState(nStartState, pWnd);



return bSuccess;
}



//接受模式
void CTwain::ModalAcquire(CWnd* pWnd)
{
pWnd = DefWnd(pWnd);
if (BeginAcquire(pWnd)) {
pWnd->EnableWindow(FALSE);
// source is enabled, wait for transfer or source closed
ModalEventLoop();
pWnd->EnableWindow(TRUE);
DropToState(nStartState);
} else {
// BeginAcquire puts everything back when it fails
}
}



//開始接受掃描源 
int CTwain::BeginAcquire(CWnd* pWnd)
{
nStartState = State();
pWnd = DefWnd(pWnd);



if (State() >= SOURCE_MANAGER_OPEN || OpenSourceManager(pWnd)) {
if (State() >= SOURCE_OPEN || OpenDefaultSource()) {
SetPixelType(TWPT_BW);
if (State() >= SOURCE_ENABLED || EnableSource(pWnd)) {
return TRUE;
} else {
TRACE_ERROR(TWERR_ENABLE_SOURCE);
}
} else {
TRACE_ERROR(TWERR_OPEN_SOURCE);
}
} else {
TRACE_ERROR(TWERR_OPEN_DSM);
}
DropToState(nStartState);
return FALSE;
} // BeginAcquire




int CTwain::LoadSourceManager(void)
{
char szSM[256];
OFSTRUCT of;

if (nState >= SOURCE_MANAGER_LOADED) {
return TRUE; // SM already loaded
}



GetWindowsDirectory(szSM, sizeof(szSM));
if (szSM[lstrlen(szSM)-1] != '\') {
lstrcat(szSM, "\");
}
lstrcat(szSM, DSM_FILENAME); // could crash!
if (OpenFile(szSM, &of, OF_EXIST) != -1) {
hSMLib = LoadLibrary(szSM);
} else {
if (bTrace) TRACE("TWAIN: LoadLibrary(%s) failed ", szSM);
hSMLib = NULL;
}
if (IsValidHandle(hSMLib)) {
pSM_Entry = (DSMENTRYPROC) GetProcAddress(hSMLib, DSM_ENTRYPOINT);
if (pSM_Entry) {
iAvailable = 1;
SetState(SOURCE_MANAGER_LOADED);
} else {
if (bTrace) TRACE("TWAIN: GetProcAddress() failed!! ");
FreeLibrary(hSMLib);
hSMLib = NULL;
}
} else {
pSM_Entry = NULL;
}



if (nState != SOURCE_MANAGER_LOADED && bTrace)
TRACE("TWAIN: LoadSourceManager() failed. ");

return (nState >= SOURCE_MANAGER_LOADED);
} // LoadSourceManager



//打開資源管理器
int CTwain::OpenSourceManager(CWnd* pWnd)
{
TW_INT32 hwnd32 = (TW_INT32)(int)(DefWnd(pWnd)->m_hWnd);



if (LoadSourceManager()) {
SM(DG_CONTROL, DAT_PARENT, MSG_OPENDSM, &hwnd32);
if (nState != SOURCE_MANAGER_OPEN && bTrace) TRACE("TWAIN: OPENDSM failed. ");
}
return (nState >= SOURCE_MANAGER_OPEN);
}



//打開缺省的掃描源 
int CTwain::OpenDefaultSource(void)
{
if (nState != SOURCE_MANAGER_OPEN) return FALSE;



// open the system default source
SourceId.ProductName[0] = '
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产中文字幕一区| 欧美性欧美巨大黑白大战| 亚洲黄色免费网站| 久久久久高清精品| 在线观看视频欧美| 成人免费av网站| 蜜桃久久久久久| 亚洲国产成人av网| 中文字幕在线不卡国产视频| 日韩亚洲欧美中文三级| 91蜜桃传媒精品久久久一区二区| 麻豆精品精品国产自在97香蕉| 一区二区三区中文在线| 欧美—级在线免费片| 欧美不卡123| 欧美一级二级三级蜜桃| 在线亚洲人成电影网站色www| 国产伦精品一区二区三区免费迷 | 国产成人精品免费在线| 首页国产欧美久久| 亚洲国产综合在线| 亚洲日本va午夜在线电影| 国产女人水真多18毛片18精品视频| 欧美精品1区2区3区| 欧美日韩免费电影| 在线欧美小视频| 97精品久久久久中文字幕| 国产不卡免费视频| 国产麻豆9l精品三级站| 国产精品一区二区久久不卡| 韩国欧美国产1区| 久久成人麻豆午夜电影| 蜜桃久久精品一区二区| 久久精品99国产国产精| 久久精品国产第一区二区三区| 奇米综合一区二区三区精品视频| 婷婷久久综合九色综合绿巨人| 亚洲自拍偷拍图区| 亚洲国产一区二区三区青草影视| 亚洲精品视频免费看| 亚洲精品va在线观看| 亚洲已满18点击进入久久| 亚洲精品久久7777| 亚洲电影一区二区| 日本亚洲一区二区| 九九九精品视频| 国产成人在线网站| 成a人片亚洲日本久久| 99久久综合色| 在线精品观看国产| 3atv在线一区二区三区| 欧美一卡二卡在线观看| 国产亚洲视频系列| 成人欧美一区二区三区视频网页| 亚洲特级片在线| 亚洲乱码中文字幕综合| 亚洲福利电影网| 蜜臂av日日欢夜夜爽一区| 国内久久婷婷综合| caoporen国产精品视频| 欧美在线观看一区二区| 91 com成人网| 国产亚洲成av人在线观看导航| 国产精品美女久久久久av爽李琼| 一个色妞综合视频在线观看| 日本不卡高清视频| 国产成人av电影在线| 91美女在线看| 欧美一区二区精品久久911| 久久精品视频一区二区| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲国产成人av| 国产乱码精品一区二区三区av| 99vv1com这只有精品| 欧美一区二区免费| 中文字幕在线不卡| 免费观看一级欧美片| av亚洲精华国产精华| 欧美精品v日韩精品v韩国精品v| 久久久蜜桃精品| 亚洲第一综合色| 国产福利精品导航| 欧美日韩亚州综合| 国产亚洲欧美日韩在线一区| 亚洲一区二区五区| 国产成人在线视频网址| 欧美一区二区黄| 日韩毛片视频在线看| 久久福利视频一区二区| 色呦呦日韩精品| 亚洲精品一区在线观看| 亚洲高清不卡在线观看| www.日韩在线| 欧美大片在线观看| 亚洲国产一区视频| 成人深夜视频在线观看| 日韩一区二区三区视频在线观看| 国产精品久久久久影院| 国产一区二区在线看| 欧美日韩高清影院| 中文字幕一区二区三区色视频| 裸体在线国模精品偷拍| 欧美日韩国产一级片| 中文字幕亚洲视频| 国产福利一区二区三区| 精品久久久久久综合日本欧美| 一区二区三区日韩欧美精品| 成人精品鲁一区一区二区| 精品久久国产老人久久综合| 亚洲国产综合在线| 色婷婷久久99综合精品jk白丝| 国产午夜精品一区二区三区视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美亚洲禁片免费| 一区二区三区四区蜜桃 | 91精品国产综合久久精品app | 一区二区欧美精品| av在线综合网| 欧美国产成人在线| 国产一区二区久久| 精品99999| 老汉av免费一区二区三区| 欧美精品久久久久久久多人混战| 一区二区三区中文在线| 91麻豆高清视频| 亚洲欧洲日韩av| 99精品国产91久久久久久| 国产精品久久久一本精品| 粉嫩高潮美女一区二区三区| 国产亚洲精品资源在线26u| 国产福利91精品| 国产欧美一区二区在线观看| 国产精品亚洲午夜一区二区三区| 99国产一区二区三精品乱码| 99天天综合性| 久久久精品国产99久久精品芒果 | 精品无人码麻豆乱码1区2区| 欧美一区二区久久| 另类小说图片综合网| 日韩精品一区二区三区蜜臀| 久久精品999| 国产欧美一区视频| 99视频有精品| 一区二区三区日韩欧美精品| 欧美亚一区二区| 日韩精品电影一区亚洲| 日韩欧美一卡二卡| 国产激情一区二区三区四区| 亚洲国产电影在线观看| 一本久久综合亚洲鲁鲁五月天 | 成人免费观看视频| 亚洲欧美日韩在线| 欧美色国产精品| 日本中文字幕一区二区视频| 精品盗摄一区二区三区| 大桥未久av一区二区三区中文| 国产精品国产三级国产三级人妇| 色婷婷一区二区三区四区| 日韩在线一二三区| 久久久激情视频| 91高清视频免费看| 免费高清在线视频一区·| 国产日本一区二区| 欧美在线观看一二区| 久久国内精品自在自线400部| 国产欧美日韩不卡免费| 欧美主播一区二区三区| 久久精品国产精品青草| 亚洲特级片在线| 日韩欧美的一区| 99re热这里只有精品视频| 三级亚洲高清视频| 欧美国产日产图区| 9191国产精品| 成人国产精品免费观看视频| 午夜电影一区二区三区| 国产视频一区二区在线| 欧美主播一区二区三区美女| 狠狠色综合播放一区二区| 亚洲精品美国一| 久久久久久久久久久99999| 在线看不卡av| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美伊人久久久久久午夜久久久久| 全国精品久久少妇| 中文字幕在线不卡视频| 精品久久久久久久久久久久久久久久久 | 一区二区三区欧美在线观看| 日韩欧美国产一区二区三区| 99国产精品国产精品毛片| 免费成人你懂的| 亚洲乱码国产乱码精品精小说| 日韩精品一区二区三区视频播放 | 亚洲欧美电影一区二区| 欧美videossexotv100| 99精品1区2区| 国产精品一区三区| 午夜激情久久久| 亚洲免费观看高清完整版在线观看熊| 欧美va亚洲va国产综合|