diff --git a/sane/scanner.cpp b/sane/scanner.cpp index 7c70b65..ac75503 100644 --- a/sane/scanner.cpp +++ b/sane/scanner.cpp @@ -343,7 +343,7 @@ namespace callback // SANE_EVENT_IMAGE_OK - void* unused, be NULL, flag - unused, be 0 int (*choose_scanner)(const std::vector& devs) = NULL; // blocked. return selected DEVQUE::id or -1 if user cancelled int (*apply_current_config)(const char* dev_name, SANE_Handle device, LPSANEAPI api) = NULL; // 应用设备的当前配置 - int (*show_setting_ui)(SANE_Handle device, HWND parent, LPSANEAPI api, const char* devname, bool with_scan) = NULL; + int (*show_setting_ui)(SANE_Handle device, HWND parent, LPSANEAPI api, const char* devname, bool with_scan, std::function callback) = NULL; int (*show_progress_ui)(HWND parent, std::function callback, std::function* notify) = NULL; int (*show_messagebox_ui)(HWND parent, int event, void* msg, int flag) = NULL; @@ -2944,53 +2944,50 @@ COM_API_IMPLEMENT(scanner, bool, ui_show_setting(HWND parent, bool with_scan, bo { if (callback::show_setting_ui) { - auto cb = [&](int ev) + auto ui = [this](ui_result res) { - on_ui_event(ev, NULL); + int uev = SANE_EVENT_SCAN_FINISHED; + switch (res) + { + case UI_RESULT_FAILED: + + break; + case UI_RESULT_OK: + + break; + case UI_RESULT_CLOSE_NORMAL: + uev = SANE_EVENT_UI_CLOSE_NORMAL; + on_ui_event(uev, (void*)uev); + break; + case UI_RESULT_CLOSE_CANCEL: + uev = SANE_EVENT_UI_CLOSE_CANCEL; + on_ui_event(uev, (void*)uev); + + break; + case UI_RESULT_START_SCAN: + on_ui_event(SANE_EVENT_UI_SCAN_COMMAND, NULL); + break; + default: + break; + } }; - - //auto ui_process = [this](ui_result res) + int res = callback::show_setting_ui(handle_, parent, &sane_api_, local_trans::u2a(scanner_name_.c_str(), CP_UTF8).c_str(),with_scan, ui); + //if (res == ui_result::UI_RESULT_CLOSE_NORMAL) //{ - // int uev = SANE_EVENT_SCAN_FINISHED; - // switch (res) - // { - // case UI_RESULT_FAILED: - - // break; - // case UI_RESULT_OK: - // break; - // case UI_RESULT_CLOSE_NORMAL: - // uev = SANE_EVENT_UI_CLOSE_NORMAL; - // on_ui_event(uev, (void*)uev); - // break; - // case UI_RESULT_CLOSE_CANCEL: - // uev = SANE_EVENT_UI_CLOSE_CANCEL; - // sane_api_.sane_cancel_api(handle_); - // //on_ui_event(uev, (void*)uev); - // break; - // case UI_RESULT_START_SCAN: - // break; - // default: - // break; - // } - //}; - int res = callback::show_setting_ui(handle_, parent, &sane_api_, local_trans::u2a(scanner_name_.c_str(), CP_UTF8).c_str(),with_scan); - if (res == ui_result::UI_RESULT_CLOSE_NORMAL) - { - int ev = SANE_EVENT_UI_CLOSE_NORMAL; - on_ui_event(ev, (void*)ev); - } - else if (res == ui_result::UI_RESULT_START_SCAN) - { - //callback::show_progress_ui(parent, ui_process, &ui_notify); - //start(); - on_ui_event(SANE_EVENT_UI_SCAN_COMMAND, NULL); - } - else if (res == UI_RESULT_CLOSE_CANCEL) - { - int ev = SANE_EVENT_UI_CLOSE_CANCEL; - on_ui_event(ev, (void*)ev); - } + // int ev = SANE_EVENT_UI_CLOSE_NORMAL; + // on_ui_event(ev, (void*)ev); + //} + //else if (res == ui_result::UI_RESULT_START_SCAN) + //{ + // //callback::show_progress_ui(parent, ui_process, &ui_notify); + // //start(); + // on_ui_event(SANE_EVENT_UI_SCAN_COMMAND, NULL); + //} + //else if (res == UI_RESULT_CLOSE_CANCEL) + //{ + // int ev = SANE_EVENT_UI_CLOSE_CANCEL; + // on_ui_event(ev, (void*)ev); + //} //on_ui_event(ev, NULL); } else if (cfg_) @@ -3096,9 +3093,6 @@ int scanner::handle_device_event(int ev_code, void* data, unsigned int* len) ui_notify(ev_code, data, *len); //else on_ui_event(ev_code, (void*)ev_code); - - - log_info(L"Scanning ...\r\n", 0); } else if (ev_code == SANE_EVENT_IMAGE_OK)