twainui调整只能扫描一次的问题
This commit is contained in:
parent
b89e7a1e86
commit
27bccfb9a6
|
@ -112,7 +112,7 @@ unix {
|
|||
MY_ARCH = loongarch64
|
||||
MY_ARCH2 = loongarch64
|
||||
}
|
||||
s
|
||||
|
||||
CONFIG += unversioned_libname unversioned_soname
|
||||
QMAKE_CXXFLAGS += -fvisibility=hidden
|
||||
QMAKE_LFLAGS += -static-libstdc++ -static-libgcc
|
||||
|
|
|
@ -136,9 +136,6 @@ win32 {
|
|||
DESTDLL_PATH = $${PWD}/../../../../release/win/$${MY_ARCH}/$${MY_CONFIGURE}/
|
||||
DESTDLL_PATH = $$replace(DESTDLL_PATH, /, \\)
|
||||
message(DESTDLL_PATH: $$DESTDLL_PATH)
|
||||
DESTHEADER_PATH = $${PWD}/../../../../sdk/include/twain_user/
|
||||
DESTHEADER_PATH = $$replace(DESTHEADER_PATH, /, \\)
|
||||
message(DESTHEADER_PATH: $$DESTHEADER_PATH)
|
||||
|
||||
SRCLIB_FILE = $${DESTDIR}/$${TARGET}.lib
|
||||
SRCLIB_FILE = $$replace(SRCLIB_FILE, /, \\)
|
||||
|
@ -146,15 +143,12 @@ win32 {
|
|||
SRCDLL_FILE = $${DESTDIR}/$${TARGET}.dll
|
||||
SRCDLL_FILE = $$replace(SRCDLL_FILE, /, \\)
|
||||
message(SRCDLL_FILE: $$SRCDLL_FILE)
|
||||
SRCHEADER_FILE = $${PWD}/../../../modules/twainui/twainui.h
|
||||
SRCHEADER_FILE = $$replace(SRCHEADER_FILE, /, \\)
|
||||
message(SRCHEADER_FILE: $$SRCHEADER_FILE)
|
||||
SRCPDB_FILE = $${DESTDIR}/$${TARGET}.pdb
|
||||
SRCPDB_FILE = $$replace(SRCPDB_FILE, /, \\)
|
||||
message(SRCPDB_FILE: $$SRCPDB_FILE)
|
||||
|
||||
QMAKE_POST_LINK += xcopy /y $$SRCLIB_FILE $$DESTLIB_PATH && xcopy /y $$SRCDLL_FILE $$DESTDLL_PATH \
|
||||
&& xcopy /y $$SRCHEADER_FILE $$DESTHEADER_PATH && xcopy /y $$SRCPDB_FILE $$DESTDLL_PATH
|
||||
&& xcopy /y $$SRCPDB_FILE $$DESTDLL_PATH
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -163,15 +157,13 @@ unix {
|
|||
CONFIG(release, debug|release) {
|
||||
DESTDLL_PATH = $$PWD/../../../../release/$${MY_OS}/$${MY_ARCH2}/
|
||||
message(DESTDLL_PATH: $$DESTDLL_PATH)
|
||||
DESTHEADER_PATH = $${PWD}/../../../../sdk/include/twain_user/
|
||||
message(DESTHEADER_PATH: $$DESTHEADER_PATH)
|
||||
|
||||
SRCDLL_FILE = $${DESTDIR}/lib$${TARGET}.so
|
||||
message(SRCDLL_FILE: $$SRCDLL_FILE)
|
||||
SRCHEADER_FILE = $${PWD}/../../../modules/twainui/*.h
|
||||
message(SRCHEADER_FILE: $$SRCHEADER_FILE)
|
||||
|
||||
QMAKE_POST_LINK += cp $$SRCDLL_FILE $$DESTDLL_PATH && cp $$SRCHEADER_FILE $$DESTHEADER_PATH
|
||||
QMAKE_POST_LINK += cp $$SRCDLL_FILE $$DESTDLL_PATH
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include "HGTwainImpl.hpp"
|
||||
#include "HGTwainImpl.hpp"
|
||||
#include "../base/HGInc.h"
|
||||
#include "../base/HGInfo.h"
|
||||
|
||||
|
@ -298,45 +298,42 @@ LRESULT CALLBACK HGTwainDSMImpl::NewWndProc(HWND hWnd, UINT msg, WPARAM wParam,
|
|||
|
||||
for (int i = 0; i < (int)p->m_listDSImpl.size(); ++i)
|
||||
{
|
||||
if (p->m_listDSImpl[i]->m_enable)
|
||||
{
|
||||
TW_EVENT twEvent;
|
||||
twEvent.pEvent = (TW_MEMREF)&msg2;
|
||||
twEvent.TWMessage = MSG_NULL;
|
||||
USHORT ret = p->m_pDSMProc(&p->m_AppId, &p->m_listDSImpl[i]->m_iden, DG_CONTROL, DAT_EVENT,
|
||||
MSG_PROCESSEVENT, (TW_MEMREF)&twEvent);
|
||||
if (TWRC_DSEVENT == ret)
|
||||
{
|
||||
if (MSG_XFERREADY == twEvent.TWMessage)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
HGImage image = NULL;
|
||||
p->m_listDSImpl[i]->ImageNativeXfer(0, 0, &image);
|
||||
if (NULL != image)
|
||||
{
|
||||
if (NULL != p->m_listDSImpl[i]->m_imageFunc)
|
||||
p->m_listDSImpl[i]->m_imageFunc((HGTwainDS)p->m_listDSImpl[i], image, p->m_listDSImpl[i]->m_imageParam);
|
||||
HGBase_DestroyImage(image);
|
||||
}
|
||||
TW_EVENT twEvent;
|
||||
twEvent.pEvent = (TW_MEMREF)&msg2;
|
||||
twEvent.TWMessage = MSG_NULL;
|
||||
USHORT ret = p->m_pDSMProc(&p->m_AppId, &p->m_listDSImpl[i]->m_iden, DG_CONTROL, DAT_EVENT,
|
||||
MSG_PROCESSEVENT, (TW_MEMREF)&twEvent);
|
||||
if (TWRC_DSEVENT == ret)
|
||||
{
|
||||
if (MSG_XFERREADY == twEvent.TWMessage)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
HGImage image = NULL;
|
||||
p->m_listDSImpl[i]->ImageNativeXfer(0, 0, &image);
|
||||
if (NULL != image)
|
||||
{
|
||||
if (NULL != p->m_listDSImpl[i]->m_imageFunc)
|
||||
p->m_listDSImpl[i]->m_imageFunc((HGTwainDS)p->m_listDSImpl[i], image, p->m_listDSImpl[i]->m_imageParam);
|
||||
HGBase_DestroyImage(image);
|
||||
}
|
||||
|
||||
HGUInt count = 0;
|
||||
p->m_listDSImpl[i]->EndXfer(&count);
|
||||
if (0 == count)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
HGUInt count = 0;
|
||||
p->m_listDSImpl[i]->EndXfer(&count);
|
||||
if (0 == count)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
p->m_listDSImpl[i]->Reset();
|
||||
}
|
||||
else if (MSG_CLOSEDSREQ == twEvent.TWMessage)
|
||||
{
|
||||
if (NULL != p->m_listDSImpl[i]->m_eventFunc)
|
||||
p->m_listDSImpl[i]->m_eventFunc((HGTwainDS)p->m_listDSImpl[i], p->m_listDSImpl[i]->m_eventParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
p->m_listDSImpl[i]->Reset();
|
||||
}
|
||||
else if (MSG_CLOSEDSREQ == twEvent.TWMessage)
|
||||
{
|
||||
if (NULL != p->m_listDSImpl[i]->m_eventFunc)
|
||||
p->m_listDSImpl[i]->m_eventFunc((HGTwainDS)p->m_listDSImpl[i], p->m_listDSImpl[i]->m_eventParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CallWindowProcW(p->m_oldWndProc, hWnd, msg, wParam, lParam);
|
||||
|
@ -354,7 +351,6 @@ HGTwainDSImpl::HGTwainDSImpl(HGTwainDSMImpl* dsmImpl)
|
|||
m_eventParam = NULL;
|
||||
m_imageFunc = NULL;
|
||||
m_imageParam = NULL;
|
||||
m_enable = HGFALSE;
|
||||
}
|
||||
|
||||
HGTwainDSImpl::~HGTwainDSImpl()
|
||||
|
@ -436,11 +432,6 @@ HGResult HGTwainDSImpl::GetDeviceCustomInfo(HGTwainDeviceCustomInfo *info)
|
|||
|
||||
HGResult HGTwainDSImpl::EnableUIOnly(HWND parent, HGDSCloseReqFunc eventFunc, HGPointer eventParam)
|
||||
{
|
||||
if (m_enable)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
TW_USERINTERFACE twUI;
|
||||
twUI.ShowUI = (TW_BOOL)HGTRUE;
|
||||
twUI.hParent = (TW_HANDLE)parent;
|
||||
|
@ -456,18 +447,12 @@ HGResult HGTwainDSImpl::EnableUIOnly(HWND parent, HGDSCloseReqFunc eventFunc, HG
|
|||
m_eventParam = eventParam;
|
||||
m_imageFunc = NULL;
|
||||
m_imageParam = NULL;
|
||||
m_enable = HGTRUE;
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
HGResult HGTwainDSImpl::Enable(HGBool showUI, HWND parent, HGDSCloseReqFunc eventFunc, HGPointer eventParam,
|
||||
HGDSImageFunc imageFunc, HGPointer imageParam)
|
||||
{
|
||||
if (m_enable)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
TW_USERINTERFACE twUI;
|
||||
twUI.ShowUI = (TW_BOOL)showUI;
|
||||
twUI.hParent = (TW_HANDLE)parent;
|
||||
|
@ -483,17 +468,11 @@ HGResult HGTwainDSImpl::Enable(HGBool showUI, HWND parent, HGDSCloseReqFunc even
|
|||
m_eventParam = eventParam;
|
||||
m_imageFunc = imageFunc;
|
||||
m_imageParam = imageParam;
|
||||
m_enable = HGTRUE;
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
HGResult HGTwainDSImpl::Disable()
|
||||
{
|
||||
if (!m_enable)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
TW_USERINTERFACE twUI;
|
||||
twUI.ShowUI = (TW_BOOL)m_showUI;
|
||||
twUI.hParent = (TW_HANDLE)m_parent;
|
||||
|
@ -505,7 +484,6 @@ HGResult HGTwainDSImpl::Disable()
|
|||
m_eventParam = NULL;
|
||||
m_imageFunc = NULL;
|
||||
m_imageParam = NULL;
|
||||
m_enable = HGFALSE;
|
||||
return HGBASE_ERR_OK;
|
||||
}
|
||||
|
||||
|
@ -600,11 +578,6 @@ HGResult HGTwainDSImpl::GetCap(HGUInt cap, HGChar *value, HGUInt maxLen)
|
|||
|
||||
HGResult HGTwainDSImpl::ImageNativeXfer(HGUInt type, HGUInt origin, HGImage* image)
|
||||
{
|
||||
if (!m_enable)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (NULL == image)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
|
@ -629,11 +602,6 @@ HGResult HGTwainDSImpl::ImageNativeXfer(HGUInt type, HGUInt origin, HGImage* ima
|
|||
|
||||
HGResult HGTwainDSImpl::EndXfer(HGUInt* count)
|
||||
{
|
||||
if (!m_enable)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
if (NULL == count)
|
||||
{
|
||||
return HGBASE_ERR_INVALIDARG;
|
||||
|
@ -652,11 +620,6 @@ HGResult HGTwainDSImpl::EndXfer(HGUInt* count)
|
|||
|
||||
HGResult HGTwainDSImpl::Reset()
|
||||
{
|
||||
if (!m_enable)
|
||||
{
|
||||
return HGBASE_ERR_FAIL;
|
||||
}
|
||||
|
||||
TW_PENDINGXFERS twPend;
|
||||
USHORT ret = m_dsmImpl->m_pDSMProc(&m_dsmImpl->m_AppId, &m_iden, DG_CONTROL, DAT_PENDINGXFERS, MSG_RESET, (TW_MEMREF)&twPend);
|
||||
if (TWRC_SUCCESS != ret)
|
||||
|
|
|
@ -74,7 +74,6 @@ private:
|
|||
HGPointer m_eventParam;
|
||||
HGDSImageFunc m_imageFunc;
|
||||
HGPointer m_imageParam;
|
||||
HGBool m_enable;
|
||||
};
|
||||
|
||||
#endif /* __HGTWAINIMPL_HPP__ */
|
||||
|
|
|
@ -23,7 +23,7 @@ Manager::~Manager()
|
|||
if (20127 != m_langCode)
|
||||
QCoreApplication::removeTranslator(&m_translator_qt);
|
||||
|
||||
HGBase_DestroyEvent(m_event);
|
||||
HGBase_DestroyEvent(m_event);
|
||||
}
|
||||
|
||||
int Manager::showDeviceSelect(const std::vector<DEVQUEUI>& devs)
|
||||
|
@ -45,7 +45,7 @@ int Manager::showDeviceSelect(const std::vector<DEVQUEUI>& devs)
|
|||
int Manager::showSettingUi(SANE_Handle device, HWND parent, LPSANEAPI api, const char *devName, bool with_scan, std::function<void (ui_result)> callback)
|
||||
{
|
||||
m_device = device;
|
||||
m_settingUiParent = parent;
|
||||
m_settingUiParent = nullptr;
|
||||
memcpy(&m_api, api, sizeof(m_api));
|
||||
m_devName = devName;
|
||||
m_with_scan = with_scan;
|
||||
|
@ -55,36 +55,24 @@ int Manager::showSettingUi(SANE_Handle device, HWND parent, LPSANEAPI api, const
|
|||
|
||||
emit createSettingUi();
|
||||
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Manager::showProgressUi(HWND parent, std::function<void (ui_result)> callback, std::function<void (int, void *, int)> *notify)
|
||||
{
|
||||
m_progressUiparent = parent;
|
||||
m_progressUiparent = nullptr;
|
||||
m_progressUiCallback = callback;
|
||||
m_notify = notify;
|
||||
|
||||
m_ProgressUiThreadId = GetCurrentThreadId();
|
||||
emit createProgressUi();
|
||||
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Manager::showMessageBoxUi(HWND parent, int event, void *msg, int flag)
|
||||
{
|
||||
m_messageBoxUiParent = parent;
|
||||
m_messageBoxUiParent = nullptr;
|
||||
m_notifyEvent = event;
|
||||
m_message = (char*)msg;
|
||||
m_flag = flag;
|
||||
|
@ -93,12 +81,6 @@ int Manager::showMessageBoxUi(HWND parent, int event, void *msg, int flag)
|
|||
|
||||
emit createMessageBoxUi();
|
||||
|
||||
MSG msg2;
|
||||
while (GetMessage(&msg2, NULL, 0, 0))
|
||||
{
|
||||
TranslateMessage(&msg2);
|
||||
DispatchMessage(&msg2);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -145,7 +127,6 @@ void Manager::on_createSettingUi()
|
|||
hg_settingdialog *dlg = new hg_settingdialog(m_device, &m_api, m_with_scan, m_devName.c_str(), m_settingUiCallback, qParent);
|
||||
dlg->setModal(true);
|
||||
dlg->show();
|
||||
::PostThreadMessage(m_SettingUiThreadId, WM_QUIT, 0, 0);
|
||||
}
|
||||
|
||||
void Manager::on_createProgressUi()
|
||||
|
@ -165,7 +146,6 @@ void Manager::on_createProgressUi()
|
|||
Dialog_progress_ui *dlg = new Dialog_progress_ui(m_progressUiCallback, m_notify, qParent);
|
||||
dlg->setModal(true);
|
||||
dlg->show();
|
||||
::PostThreadMessage(m_ProgressUiThreadId, WM_QUIT, 0, 0);
|
||||
}
|
||||
|
||||
void Manager::on_createMessageBoxUi()
|
||||
|
@ -185,5 +165,4 @@ void Manager::on_createMessageBoxUi()
|
|||
QMessageBox *msg = new QMessageBox(QMessageBox::Critical, tr("Prompt"), QString::fromStdString(m_message), QMessageBox::Ok, qParent);
|
||||
msg->setModal(true);
|
||||
msg->show();
|
||||
::PostThreadMessage(m_MessageBoxUiThreadId, WM_QUIT, 0, 0);
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "huagao/hgscanner_error.h"
|
||||
#include <QCloseEvent>
|
||||
#include <QTimer>
|
||||
#include <thread>
|
||||
|
||||
Dialog_progress_ui *Dialog_progress_ui::m_param = nullptr;
|
||||
|
||||
|
@ -53,10 +54,19 @@ void Dialog_progress_ui::on_pbtn_cancelScan_clicked()
|
|||
m_callback(UI_RESULT_CLOSE_CANCEL);
|
||||
}
|
||||
|
||||
void notify_close(std::function<void (ui_result)> callback)
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||
callback(UI_RESULT_CLOSE_NORMAL);
|
||||
}
|
||||
|
||||
void Dialog_progress_ui::on_pbtn_close_clicked()
|
||||
{
|
||||
disconnect(m_timer, SIGNAL(timeout()), this, SLOT(on_pbtn_close_clicked()));
|
||||
m_callback(UI_RESULT_CLOSE_NORMAL);
|
||||
//CloseHandle(CreateThread(NULL, 0, notify_close, (void*)m_callback, 0, 0));
|
||||
std::thread th_close(notify_close, m_callback);
|
||||
th_close.detach();
|
||||
// m_callback(UI_RESULT_CLOSE_NORMAL);
|
||||
close();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue