在执行源管理时出现的问题!

xiao234666 2008-02-25 12:32:55
我用的是非界面的程序来写TWAIN接口.下面是我刚开始的一些代码,从twain官方网站上下的twain1.9a 文档里的整理的一些代码来实现源管理的装载和打开,编译能通过,但在调试时,到打开源管理时就会出现一个"访问违法"的错误.我怀疑是源管理装载出了问题,但又不知道怎么判断源管理是否成功装载.
//下面是附上我的代码,代码写得很简单,麻烦你给我看看
#include "windows.h"
#include "ver.h"
#include "stdio.h"
#include "twain.h"
void main()

{
DSMENTRYPROC pDSM_Entry;
HMODULE hDSMLib;
char szSMDir[144];
OFSTRUCT of;
TW_IDENTITY AppID; // App's identity structure
TW_HANDLE hWnd ;
TW_UINT16 rc;
// check for the existence of the TWAIN_32.DLL file in the Windows
// directory
GetWindowsDirectory (szSMDir, sizeof(szSMDir));
/*** Could have been networked drive with trailing '\' ***/
if (szSMDir [(lstrlen (szSMDir) - 1)] != '\\')
{ lstrcat( szSMDir, "\\" );
}
if (OpenFile(szSMDir, &of, OF_EXIST) != -1)
{
// load the DLL
if ((hDSMLib = LoadLibrary("TWAIN_32.DLL")) != NULL)
{
// check if library was loaded
if(hDSMLib)
{
if ((pDSM_Entry = (DSMENTRYPROC)GetProcAddress(hDSMLib,
MAKEINTRESOURCE (1))) != NULL)
{
if (pDSM_Entry )
FreeLibrary(hDSMLib);
}
}
}
}
///////////*********打开源管理*********************/////////

AppID.Id = 0; // Initialize to 0 (Source Manager
// will assign real value)
AppID.Version.MajorNum = 3; //Your app's version number
AppID.Version.MinorNum = 5;
AppID.Version.Language = TWLG_ENGLISH_USA;
AppID.Version.Country = TWCY_USA;
lstrcpy (AppID.Version.Info, "Your App's Version String");
AppID.ProtocolMajor = TWON_PROTOCOLMAJOR;
AppID.ProtocolMinor = TWON_PROTOCOLMINOR;
AppID.SupportedGroups = DG_IMAGE ¦ DG_CONTROL;
lstrcpy (AppID.Manufacturer, "App's Manufacturer");
lstrcpy (AppID.ProductFamily, "App's Product Family");
lstrcpy (AppID.ProductName, "Specific App Product Name");

//////////////执行DG_CONTROL / DAT_PARENT / MSG_OPENDSM
hWnd = (TW_HANDLE)GetActiveWindow();
rc = (*pDSM_Entry) (&AppID,
NULL,
DG_CONTROL,
DAT_PARENT,
MSG_OPENDSM,
(TW_MEMREF) &hWnd);

}
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2008-03-07
  • 打赏
  • 举报
回复
up :)
独孤过儿 2008-02-25
  • 打赏
  • 举报
回复
好像这个问题也问过雁大哥吧...

你的那写头文件都没有,怎么帮你调试啊...

既然你都知道怀疑是资源装载的时候出了问题,你就直接检验一下资源装载那个函数的返回值或者标志位就行了啊,而且那个函数肯定也有一个

manual或者description什么的,你查一下看看啊...
xiao234666 2008-02-25
  • 打赏
  • 举报
回复
我在提问的时候列出的头文件是这些,应该都包括了吧
#include "windows.h"
#include "ver.h"
#include "stdio.h"
#include "twain.h"
这个问题,我昨天问过了雁大哥了,但一直没有得到解答.听chiyer说好象雁大哥这几天都比较忙.还有你说的查返回值或标志位,我也查过了,它返回值就是一个句柄,从上面看就是一个普通的地址,看不出什么来.所以我真的是太需要你们有开发经验的来给我点播下了,不然我这个东西就耗在这里无法往下进行了

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧