ui 扫描窗口是主动发送出去的,暂时这么弄

This commit is contained in:
13038267101 2023-04-26 18:07:59 +08:00
parent 5217432a8f
commit d3c9c55e79
1 changed files with 19 additions and 2 deletions

View File

@ -697,6 +697,19 @@ void scanner::apply_config(void)
} }
void scanner::on_ui_event(int uev, void* sender) void scanner::on_ui_event(int uev, void* sender)
{ {
if (uev == SANE_EVENT_UI_SCAN_COMMAND) //UI主动通知
{
int(__stdcall * h)(int, void*) = scanner_ev_handler_;
if (h)
{
//wchar_t info[128] = { 0 };
//(info, _countof(info) - 1, L"[CRAZY]%d scanner events stored but APP has no action, we try to trigger it ONCE ...\r\n", ev_cnt_);
//ev_cnt_--;
h(SANE_EVENT_UI_SCAN_COMMAND, evh_param_);
return;
}
}
bool indicator = sender == indicator_.get(); bool indicator = sender == indicator_.get();
if (uev == SANE_EVENT_SCAN_FINISHED || uev == SANE_EVENT_UI_CLOSE_NORMAL || uev == SANE_EVENT_UI_CLOSE_CANCEL) if (uev == SANE_EVENT_SCAN_FINISHED || uev == SANE_EVENT_UI_CLOSE_NORMAL || uev == SANE_EVENT_UI_CLOSE_CANCEL)
{ {
@ -752,6 +765,8 @@ void scanner::on_ui_event(int uev, void* sender)
ev_cnt_++; ev_cnt_++;
} }
if (ev_cnt_ == events_.count() && if (ev_cnt_ == events_.count() &&
(ev_cnt_ >= 5 || (ev_cnt_ > 1 && !is_scanning_))) (ev_cnt_ >= 5 || (ev_cnt_ > 1 && !is_scanning_)))
{ {
@ -2460,9 +2475,11 @@ COM_API_IMPLEMENT(scanner, int, get_scanned_images(DWORD milliseconds))
else else
Sleep(elapse); Sleep(elapse);
count = images_.count();
//int ev = get_event(); //int ev = get_event();
// //
//count = images_.count();
//if (ev == SANE_EVENT_SCAN_FINISHED) //if (ev == SANE_EVENT_SCAN_FINISHED)
//{ //{
// ui_hide(); // ui_hide();
@ -2930,7 +2947,7 @@ COM_API_IMPLEMENT(scanner, bool, ui_show_setting(HWND parent, bool with_scan, bo
// break; // break;
// } // }
//}; //};
int res = callback::show_setting_ui(handle_, parent, &sane_api_, true); int res = callback::show_setting_ui(handle_, parent, &sane_api_, with_scan);
if (res == ui_result::UI_RESULT_CLOSE_NORMAL) if (res == ui_result::UI_RESULT_CLOSE_NORMAL)
{ {
int ev = SANE_EVENT_UI_CLOSE_NORMAL; int ev = SANE_EVENT_UI_CLOSE_NORMAL;