⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twainhelper.h

📁 twain事例 本人精心收藏 相信对大家有帮助
💻 H
字号:



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 预处理
#pragma once
#include <Windows.h>
#include "Include/Twain.h"

#ifndef PCTSTR
#define PCTSTR LPCTSTR
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 使用方法
// 1. 调用 CTwainHelper::Initialize() 确定是否有可用的设备。
// 2. 在窗口消息循环中,调用 CTwainHelper::ProcessMessage() 处理 TWAIN 消息。
// 3. 要获取图像时,调用 CTwainHelper::GetImage()。
// 4. 如果图像已准备好 (如用户确定扫描图像),窗口会收到 WM_COMMAND 消息,wParam 为 IDC_TwainHelper。
//    此时应用程序可以调用 CTwainHelper::TransferImage() 获取图像到文件中。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 消息: 如果图像已准备好,父窗口将收到 WM_COMMAND 消息
// 参数: LOWORD(wParam) 为 IDC_TwainHelper,HIWORD(wParam) 第一次收到此消息时为 0,以后为总的图像个数
// 返回: 如果返回 S_FALSE,将不再传送后继的图像
// 备注: 收到此消息后,可以调用 TransferImage() 获取图像到文件中
#define IDC_TwainHelper						51234
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CTwainHelper 类
class CTwainHelper
{
private:
	static HWND m_hParent;					// 父窗口句柄
	static HMODULE m_hTwain;				// TWAIN 动态连接库模块句柄
	static DSMENTRYPROC m_dpDsmEntry;		// 数据源管理器入口函数地址
	static TW_IDENTITY m_twidOrigin;		// 程序标识信息
	static TW_IDENTITY m_twidSource;		// 数据源标识信息

public:
	// 初始化 TWAIN 库
	static BOOL Initialize(HWND hParent);

	// 功能: 处理 TWAIN 消息
	// 返回: 返回 TRUE 表示是 TWAIN 消息,此时父窗口不应该处理这个消息
	// 备注: 在父窗口消息循环中应该调用此函数
	static BOOL ProcessMessage(const PMSG pmsgMsg);

	// 功能: 从 TWAIN 设备中获取图像,并以消息回调的形式通知父窗口
	// 参数: uCount 指定要获取的图像的个数,0 表示不指定个数。此参数需要设备支持
	// 返回: 返回 TRUE 表示成功或者用户取消,其它表示失败
	// 备注: 如果调用成功,当图像准备好时,父窗口将到 WM_COMMAND 消息,请参看 IDC_TwainHelper 的说明
	static BOOL GetImage(UINT uCount = 0);

	// 传送图像到文件中
	static BOOL TransferImage(PCTSTR ptzFileName);

	// 关闭 TWAIN 对话框
	static VOID Close();

private:
	// 调用数据源管理器入口函数
	inline static TW_UINT16 DsmEntry(pTW_IDENTITY ptwidDest,
		TW_UINT32 twuGroup, TW_UINT16 twuData, TW_UINT16 twuMsg, TW_MEMREF ptwmData)
	{
		return m_dpDsmEntry(&m_twidOrigin, ptwidDest, twuGroup, twuData, twuMsg, ptwmData);
	}

	// 设置单值参数
	inline static TW_UINT16 SetOneValueCap(TW_UINT16 twuCap, TW_UINT32 twuValue)
	{
		TW_CAPABILITY twcCap;
		TW_ONEVALUE twovValue;

		twcCap.Cap = twuCap;
		twcCap.ConType = TWON_ONEVALUE;
		twcCap.hContainer = &twovValue;
		twovValue.Item = twuValue;
		twovValue.ItemType = TWTY_INT16;
		return DsmEntry(&m_twidSource, DG_CONTROL, DAT_CAPABILITY, MSG_SET, &twcCap);
	}

	// 显示获取图像对话框
	inline static TW_UINT16 ShowUI()
	{
		TW_USERINTERFACE twuiUI;

		twuiUI.ShowUI = TRUE;
		twuiUI.ModalUI = TRUE;
		twuiUI.hParent = m_hParent;
		return DsmEntry(&m_twidSource, DG_CONTROL, DAT_USERINTERFACE, MSG_ENABLEDS, &twuiUI);
	}

	// 隐藏获取图像对话框
	inline static TW_UINT16 HideUI()
	{
		TW_USERINTERFACE twuiUI;

		twuiUI.ShowUI = FALSE;
		twuiUI.ModalUI = TRUE;
		twuiUI.hParent = m_hParent;
		return DsmEntry(&m_twidSource, DG_CONTROL, DAT_USERINTERFACE, MSG_DISABLEDS, &twuiUI);
	}
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -