主题:  自定义函数名于系统函数同名

颠狗

职务:普通成员
等级:1
金币:0.0
发贴:83
#12001/8/21 22:32:53
调用API的ShowWindow函数时,出现于AW内部函数showwindow同名的情况,怎么解决



与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928
#22001/8/23 19:55:01
这个问题我也遇到过,即使选择覆盖或改名也不行。

后来自己作了一个DLL,在里面调用showwindow。



燕云

职务:普通成员
等级:2
金币:10.0
发贴:600
#32001/8/25 1:46:47
Y兄,也写函数。真心向你请教相关规范!
skcyh@163.com


云网媒体【YZCNET.COM】云网媒体开展软件技术、互联网技术、电子商务技术、多媒体设计等服务; 其中包括 :软件开发、网站建设、手机服务、多媒体设计、 图片及演示文稿服务等;

与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928
#42001/8/25 17:15:47
U32其实就是DLL,只是在资源描述文件中多了一些函数描述信息:包括动态链接库中的函数目录、参数类型、返回值类型以及说明性文字等等,具体格式如下:

    函数目录格式
1 DLL_HEADER LOADONCALL DISCARDABLE
BEGIN
"functionname1[=exportname1]\0",
"functionname2[=exportname2]\0",
……
"functionnameN[=exportnameN]\0",
    "\0"
END
其中第一行表示下面的内容是函数目录,BEGIN和END之间为目录内容:functionname1到functionnameN为动态链接库中包含的函数名称。

    函数描述
functionname DLL_HEADER LOADONCALL DISCARDABLE
BEGIN
    "FileName\0",
        "returnvalue\0",
    "argumentList\0",
        "description\r\n"
    "description\0"
END
其中functionname为出现在函数目录中的函数名;Filename表示存贮函数的动态链接库文件名;returnvalue描述函数的返回值类型,argumentList描述函数的参数类型列表;description为对函数的说明性文字,说明性文字可以有多行,行与行之间用"\r\n"分隔,最后一行末尾必须加上"\0"。

在MAKE之后,将生成的DLL扩展名改变为U32就行了。(其实不改也行)

可以找本《Authorware教程》(电子工业出版社)看一下,里面有详细的描述和例子,包括数据类型描述格式、AW与Windows参数类型转换、返回值类型转换等等规则。上面的内容就是从里面摘录的。

自AW 5出了之后就很少自编DLL了。原来编DLL的目的是因为许多API要求传递缓冲区指针,而AW没有,但利用AW 5提供的MEMTOOLS.U32就可以开辟缓冲区和传递缓冲区指针,以及从缓冲区中取得各种类型的返回值。

编辑历史:[这消息被Y编辑过(编辑时间2001-08-25 17:38:25)]
[这消息被Y编辑过(编辑时间2001-08-27 15:22:53)]


颠狗

职务:普通成员
等级:1
金币:0.0
发贴:83
#52001/8/26 11:02:44
Y,我想直接引用dll中的函数,showwindow在哪个dll中?可以举个转换的例子吗?
或者你告诉我,如何控制窗口最小化



与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928
#62001/8/27 8:02:41
如果仅控制窗口最小化,用winapi.u32中的
ShowWindowAsync(WindowHandle, 2)



颠狗

职务:普通成员
等级:1
金币:0.0
发贴:83
#72001/8/27 12:06:39
Y,,,,,你为何不把问题说得严重些,害我¥……%¥……%※※

谢谢指点



颠狗

职务:普通成员
等级:1
金币:0.0
发贴:83
#82001/9/7 20:57:49
很有意思,偶尔用了某个汉化版,结果winapi的showwindow可以通过,也可以正常打包。
仔细一看,原来是该版汉化时将系统函数名都改成中文了,所以也就没了同名冲突。呵呵变态,,,
我再用AW3,也通过。(因为AW3还没有showwindow函数)。看来是AW编辑器的BUG。

看来类似情况可以先用低版本AW导入函数,再转换成高版本打包