以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]全局代码中的Public Declare Function在项目事件中怎么定义  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131095)

--  作者:shenyl0211
--  发布时间:2019/2/16 12:14:00
--  [求助]全局代码中的Public Declare Function在项目事件中怎么定义
这是在【全局代码】中定义的:

Public Declare Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" (ByVal hwnd As Integer, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Integer, ByVal wlange As Integer, ByVal dwTimeout As Integer) As Integer

但在【BeforeOpenProject】事件中尚未生效,因此不能在该事件中使用MessageBoxTimeout(BaseMainForm.Handle,"正在升级, 请停止任何操作!", "提示", vbOKonly, 0, 3000) \'3秒后自动关闭提示窗口

现在想在【BeforeOpenProject】事件中判断项目需要升级后,立刻执行升级(自定义代码),并用上述定时提示。

在【BeforeOpenProject】事件中执行升级的好处是可以不执行后续的项目事件,减少启动时间。当然也可以通过增加条件语句来达到不加载表、不执行初始化设置,但这就有点啰嗦了。

使用MessageBoxTimeout的好处也是在于缩短时间,因此,如果用MessageBox.show还不如放在【AfterOpenProject】事件中,再使用MessageBoxTimeout

如果不在乎几秒钟的时间,也可以在【AfterOpenProject】事件中执行升级。

求助:上述的【全局代码】怎么在BeforeOpenProject】事件中定义?或能否定义?

谢谢!



--  作者:有点蓝
--  发布时间:2019/2/16 12:19:00
--  
这个没有办法【BeforeOpenProject】事件全局代码还没有初始化,不能使用的。但是这种定义也只能放到全局代码中。

曲折一点可以这样,用vs编译一个dll,把全局代码的定义放到dll中封装好,然后在【BeforeOpenProject】事件中调用

--  作者:shenyl0211
--  发布时间:2019/2/17 11:54:00
--  
谢谢蓝版