用API函数 Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
关于从模态窗口返回值,以上几位推荐的方法都不是很好,全局变量不可避免的会带来代码的维护性问题,DDE、管道等似乎杀鸡用牛刀了。其实直接使用函数返回值即可。 我们都知道,如果调用了 Form.show vbModal,那么这个调用会Block到窗口“关闭”才返回,但实际上,窗口隐藏的话,也是可以返回的,所以我的模态窗口,特别是用于获取某些参数的模态窗口一般都这么写: 在模态窗口中新建一个函数: public function ShowModal (input arguments ... output arguments ) as long 根据 input arguments 初始化本窗口 me.show modal 把放回值填入 output arguments unload me end function一般返回值用来表示是确定关闭还是取消关闭等,不同的窗口关闭方法。 在 OK,Cancel 等事件中,一般用 me.Hide 而不是 unload me这样,需要调用某个模态窗口时,都象 ShowMessage 一样 frmModal.ShowModal (arg1, arg2, arg3 .... ) 这样的程序,看起来更符合对象的封装原则。
做个窗体的话似乎有点变态.
gz
自己做一个把
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
我们都知道,如果调用了 Form.show vbModal,那么这个调用会Block到窗口“关闭”才返回,但实际上,窗口隐藏的话,也是可以返回的,所以我的模态窗口,特别是用于获取某些参数的模态窗口一般都这么写:
在模态窗口中新建一个函数:
public function ShowModal (input arguments ... output arguments ) as long
根据 input arguments 初始化本窗口
me.show modal
把放回值填入 output arguments
unload me
end function一般返回值用来表示是确定关闭还是取消关闭等,不同的窗口关闭方法。
在 OK,Cancel 等事件中,一般用 me.Hide 而不是 unload me这样,需要调用某个模态窗口时,都象 ShowMessage 一样
frmModal.ShowModal (arg1, arg2, arg3 .... ) 这样的程序,看起来更符合对象的封装原则。