JNIEXPORT void JNICALL Java_main_Main_enableDS
(JNIEnv *$env, jclass $cls, jboolean $showUI, jboolean $model){
JAVA_CATCH_BEGIN("启动设备")
g_twainTools.EnableDS($showUI == JNI_TRUE, $model == JNI_TRUE);
MSG msg;
TW_UINT16 dsMsg = 0xFF;
while(GetMessage(&msg, NULL, 0, 0)) {
if (!g_twainTools.TWAIN_MessageLoop(&msg, dsMsg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
JAVA_CATCH_END
}
void CoTwain::EnableDS(bool $showUI, bool $model) throw(CoTwainException) {
CATCH_BEGIN("启动设备")
// 状态检查
TW_INT32 validStatus[] = {
STAT_SOURCE_OPENED
};
CHECKSTATUS(validStatus, actionName);
TW_USERINTERFACE twUI;
twUI.ShowUI = $showUI;
twUI.ModalUI = $model;
twUI.hParent = m_hMainWnd;
TW_UINT16 rc = m_lpfnDsmEntry(&m_AppId, &m_SourceID, DG_CONTROL, DAT_USERINTERFACE,
MSG_ENABLEDS, &twUI);
if (rc == TWRC_SUCCESS) {
_status = STAT_SOURCE_ENABLED;
} else {
DSMEXCEPTION(actionName, rc);
}
CATCH_END
}
bool CoTwain::TWAIN_MessageLoop(const PMSG $pMsg, TW_UINT16 &$dsMsg) throw(CoTwainException) {
CATCH_BEGIN("消息循环")
if (0 == m_SourceID.Id) return false;
TW_EVENT twEvent;
twEvent.pEvent = $pMsg;
twEvent.TWMessage = MSG_NULL;
TW_UINT16 rc = m_lpfnDsmEntry(&m_AppId, &m_SourceID
, DG_CONTROL, DAT_EVENT, MSG_PROCESSEVENT
, &twEvent);
$dsMsg = twEvent.TWMessage;
// 是设备事件时
if (TWRC_NOTDSEVENT != rc) {
if (MSG_XFERREADY == twEvent.TWMessage) {
_status = STAT_SOURCE_READY;
return true;
} else if (MSG_CLOSEDSREQ == twEvent.TWMessage) {
_status = STAT_SOURCE_ENABLED;
return true;
}
return true;
}
return false;
CATCH_END
}
联系客服