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