VB对话框问题

VB对话框问题,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

VB里面如何调用windows里面的那种警告对话框,以及询问框?

具体的代码是什么?

以前用过,不过长时间没用了,就忘记了.

请高手出招啊.

解析:

使用msgbox()

MsgBox函数 返回

在对话框中显示消息,等待用户单击按钮,并返回一个 Integer 告诉用户单击哪一个按钮。

语法

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

MsgBox 函数的语法具有以下几个命名参数:

部分 描述

Prompt 必需的。字符串表达式,作为显示在对话框中的消息。prompt 的最大长喊搏度大约为 1024 个字符,由所用字符的宽度决定。如果 prompt 的内容超过一行,则可以在每一行之间用回车符 (Chr(13))、换行符 (Chr(10)) 或是回车与换行符的组合 (Chr(13) &Chr(10)) 将各行分隔开来。

Buttons 可选的。数值表达式是值的总和,指定显示按钮的数目及形式,使用的图标样式,缺省按钮是什么以及消息框的强制回应等。如果省略,则 buttons 的缺省值为 0。

Title 可选的。在对话框标题栏中显示的字符串表达式。如果省略 title,则将应用程序名放在标题栏中。

Helpfile 可选的。字符串表达式,识别用来向对话框提供上下文相关帮助的帮助文件。如果提供了 helpfile,则也必须提供 context。

Context 可选的。数值表达式,由帮助文件的作者指定给适当的帮助主题的帮助上下文编号。如果提供了 context,则也必须提供 helpfile。

设置值

buttons 参数有下列设置值:

常数 值 描述

vbOKOnly 0 只显示 OK 按钮。

VbOKCancel 1 显示 OK 及 Cancel 按钮。

VbAbortRetryIgnore 2 显示 Abort、Retry 及 Ignore 按钮。

VbYesNoCancel 3 显示 Yes、No 及 Cancel 按钮。

VbYesNo 4 显示 Yes 及 No 按钮。

VbRetryCancel 5 显示 Retry 及 Cancel 按钮。

VbCritical 16 显示 Critical Message 图标。

VbQuestion 32 显示 Warning Query 图标。

VbExclamation 48 显示 Warning Message 图标。

VbInformation 64 显示 Information Message 图标。

vbDefaultButton1 0 第一个按钮是缺省值。

vbDefaultButton2 256 第二个按钮是缺省值。

vbDefaultButton3 512 第三个按钮是缺省值。

vbDefaultButton4 768 第四个按钮是缺省值。

vbApplicationModal 0 应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。

vbSystemModal 4096 系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。

vbMsgBoxHelpButton 16384 将Help按钮添加到消息框

VbMsgBoxSetForeground 65536 指定消息框窗口作为前景窗口

vbMsgBoxRight 524288 文本为右对齐

vbMsgBoxRtlReading 1048576 指定文本应为在希伯来和 *** 语系统中的从右到左显示

第一组值 (0-5) 描述了对话框中显示的按钮的类薯指型与数目;第二组值 (16, 32, 48, 64) 描述了图标的样式;第三组值 (0, 256, 512) 说明哪一个按钮是缺省值;而第四组值 (0, 4096) 则决定消息框的强制返回性。将这些数字相加以生郑手祥成 buttons 参数值的时候,只能由每组值取用一个数字。

注意 这些常数都是 Visual Basic for Applications (VBA) 指定的。结果,可以在程序代码中到处使用这些常数名称,而不必使用实际数值。

返回值

常数 值 描述

vbOK 1 OK

vbCancel 2 Cancel

vbAbort 3 Abort

vbRetry 4 Retry

vbIgnore 5 Ignore

vbYes 6 Yes

vbNo 7 No

说明

在提供了 helpfile 与 context 的时候,用户可以按 F1 来查看与 context 相应的帮助主题。像 Microsoft Excel 这样一些主机应用程序也会在对话框中自动添加一个 Help 按钮。

如果对话框显示 Cancel 按钮,则按下 ESC 键与单击 Cancel 按钮的效果相同。如果对话框中有 Help 按钮,则对话框中提供有上下文相关的帮助。但是,直到其它按钮中有一个被单击之前,都不会返回任何值。

注意 如果还要指定第一个命名参数以外的参数,则必须在表达式中使用 MsgBox。为了省略某些位置参数,必须加入相应的逗号分界符

你的问题其实很简单的,几乎没有难度可言!

我觉得你连这样的问题都想不出个解决办法,或没有什么思路,只能说明你看的代码太少了,对举轿C++(你的问题不能算是MFC的问题)还不熟悉。

给举铅个问题思考逻辑吧:

static CDialog1 dlg1这行,明显定义了个局部类,既然局部类最终会被销毁,因此由局部类所创建的那个窗口(不管是不是对话框,什么模态不模态都一样)做的任何修改都不应该在局部类里的成员变量里保存起来,因为类都消失了,哪来的成员变量。因此下次再重新定义个局部类,窗口初始化代码里(OnInitDialog里响应),不可能用成员变量对窗口进行初始化(也就是无法显示上次该对话框里任何控件所做的任何设置),上次做的修改你保存在哪里呢,成员变量已经重新被初始化了呀。

因此,上次做的修改只能保存在其它地方,譬如创建这个局部类的那个类(B类里),可以在局部类返回时,立刻将局部类做的设置赋值给B类的成员变量,然后下次再创建这个局部类时,再把B类成员变量保存的值再传给这个局部类,然后再调用DoModal创建窗口。

局部类做的设置外传给B类,以及B类再重新回传给局部类,这样的编程技巧应该会吧!?可以在局部类里定义个成员变量,这个变量就是用来与B类进行通信的,但建议不要用PUBLIC定义这个成员变量,而应该在局部类里定义一对PUBLIC成员函数,一个是BOOL SetInitValue(xxx),一个是xxx GetModifiedValue(),这两个函数是给B类调用的,以便能方便与局部类通信。

最后在局部类使用DoModal的时候必要调用InitDialog函数,这个时候因为这个局部类里有个成员变量已经被B类给设置过了,因此在InitDialog里可以轻松地为窗口做上次调用的各种设置。

思路应该很简单吧,你没想到,只是因为你的C++没学好。至于那个static我明白你的意思,不让那个变量消失嘛!但,一般做程序的,好像都不会立刻想到用static的,因为像你这样的场合,熟练的程序员可能考虑都不用考虑什么static。而且,解决初始化的问题还有好多好多办法呢!多阅读别人的代码,会有提高的,只是时正答好间问题,坚持下来你就是高手!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12352970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存