j519948746 发表于 前天 22:14

如何通过视窗制作一个通用对话框DLL给易语言调用

众所周知 易语言的通用对话框小的可怜,精易模块的通用对话框在设置初始目录时是存在问题的,初次打开通用对话框时初始目录设置生效,一旦选择/保存了文件后续再打开通用对话框选择文件时会延用上次的目录,而不是代码中设定的初始目录
所以我想用火山做一个DLL给易语言调用仅仅满足通用对话框这个需求

由于是新手 目前遇到了下面几个问题:
1.通用对话框.打开() 需要填写窗口组件,这个“窗口组件”类型我需要怎么传递过来,易语言那边对应使用什么类型的变量?
2.函数返回值被提示不允许使用文本型,那么我要怎么传递文本?通过取变量地址么?

Xelloss0618 发表于 昨天 08:59

火山这个不能封给易语言的,因为窗口组件不能传递。
火山的通用对话框跟易语言的一样,都是调用系统API,精易那个更改目录要解决也很简单,加上 OFN_NOCHANGEDIR(8) 标志就行了。

j519948746 发表于 昨天 17:48

Xelloss0618 发表于 2025-10-9 08:59
火山这个不能封给易语言的,因为窗口组件不能传递。
火山的通用对话框跟易语言的一样,都是调用系统API,精 ...

请大佬帮忙解惑我加入了OFN_NOCHANGEDIR标记后依然是沿用上次选择的目录

Xelloss0618 发表于 昨天 18:41

j519948746 发表于 2025-10-9 17:48
请大佬帮忙解惑我加入了OFN_NOCHANGEDIR标记后依然是沿用上次选择的目录
...

好吧,我再仔细看了一下。
OFN_NOCHANGEDIR这个标志对GetOpenFileName无效。
这个API,如果传递的初始目录一样,会用最近打开过的路径。

再看了一下火山,它用的是MFC里的CFileDialog类,不是直接调用API,所以它的不改变目录能生效。
页: [1]
查看完整版本: 如何通过视窗制作一个通用对话框DLL给易语言调用