我之所以这样问是因为我想知道这样做的最佳实践方式,部分是因为我得到的顶级谷歌结果是2002年的论坛帖子,其中的问题甚至没有得到解答.
我继承了一些VB6代码,并且在所述代码中有一些MsgBox调用,其中许多显示最终用户在短时间后可能会发现非常烦人的消息(例如"打印完成","添加记录"等)
我想在MsgBox上添加一个复选框的标准用户界面控件,上面写着"别再问我这个",这样当选中并单击OK时,会保存一个让程序知道的设置,你知道..永远不要再问了.相当标准的控制,这个想法是相当不言自明的.
我想知道的是在VB6中这样做的最佳实践方法是什么.有一种显而易见的方法就是为这些类型的msgboxen创建一个新表单并用该表单上的.Show替换旧的MsgBox调用,但是Stack Overflow上的VB6专家有更好的方法吗?
提前致谢
据我所知,没有其他办法.您需要使用复选框创建自己的消息框表单.当然,您还需要修改代码以存储和检索此设置(并根据设置进行适当的操作).
我已经在我自己的应用程序中多次这样做了.要考虑的一件事......假设用户选中"不再向我显示"框.在我看来,应该有一种方法来重置设置.由于消息框表单不会再次显示,我将其添加到配置表单(对于我的应用程序).
您可能想要考虑的一件事是对MSGBOX函数进行子类化.您可以在应用程序中创建一个具有类似参数列表的功能,但需要额外添加一些功能.如果缺少额外的参数,只需调用vba.MsgBox(以获得标准行为).如果您传入额外参数,则可以调用新表单.
嗯......你不是绝对正确的人;)
从Win2000开始,有一个SHMessageBoxCheck函数可以解决问题.VB6声明:
Private Declare Function SHMessageBoxCheck Lib "shlwapi" Alias "#185" (ByVal hWnd As Long, ByVal lpszText As String, ByVal lpszTitle As String, ByVal dwType As VbMsgBoxStyle, ByVal iDefault As Long, ByVal lpszId As String) As Long
Run Code Online (Sandbox Code Playgroud)
其他一切按照链接:)