C语言MessageBox问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言MessageBox问题相关的知识,希望对你有一定的参考价值。

#include"windows.h"
int main()

MessageBox(NULL,"do you?","baby",MB_YESNO);
if(MessageBox!=NULL)MessageBox(NULL,"e","e",MB_OK);
else
MessageBox(NULL,"a","a",MB_OK);
return 0;


if(MessageBox!=NULL)这里改成什么才能判定,点击的是YES还是NO

1、MessageBox(),注意区分大小写。它的功能是弹出一个标准的Windows对话框。它不是C函数库的标准函数,而是WINDNWS API函数,但是可以用C语言调用API函数。
下面举例,显示出一个对话框,其标题为Hello,内容为Hello World,包含一个【确定】按钮:
#include <windows.h>
int main()

MessageBox(NULL,"Hello World","Hello",MB_OK);
return 0;

//代码在VC6.0下编译通过
2、MessageBox()函数第一个参数是窗口句柄,第二个是窗口内容字符串,第三个是窗口标题字符串,第四个是窗口所包含的按钮类型;函数返回值为int类型,用于判断用户点击了哪个按钮。
简单介绍一下第四个参数(左边参数,右边按钮):
MB_OK 确定
MB_OKCANCEL 确定 取消
MB_YESNO 是 否
MB_RETRY 重试
还可以在窗口显示通知图标:
MB_OK|MB_ICONQUESTION 确定 问号
依此类推,只要在后面加“|”然后是图标代号。
MB_ICONEXCLAMATION 感叹号
MB_ICONERROR 错误
MB_ICONINFORMATION 信息
参考技术A 用MessageBox()的返回值判断,返回值含意如下:

IDABORT:Abort 按钮被选中。
IDCANCEL:Cancel按钮被选中。
IDIGNORE:Ignore按钮被选中。

IDNO:NO按钮被选中。
IDOK:OK按钮被选中。
IDRETRY:RETRY按钮被选中。

IDYES:YES按钮被选中。

***************************************************

示例:

#include "windows.h"
int main()
int i;

i=MessageBox(NULL,"do you?","baby",MB_YESNO);
if(i==IDYES)MessageBox(NULL,"e","e",MB_OK);/*如果点击了“是”*/
else
MessageBox(NULL,"a","a",MB_OK);/*否则*/
return 0;
本回答被提问者采纳
参考技术B 消息框的函数原型:
int MessageBox(HWND hwnd,LPCTSTR lpsztext,LPCSTR lpsztitle,UINT ustyle);

消息框函数有4个参数:
第1个参数是父窗口的句柄。为NULL,说明消息框没有父窗口。
第2个参数就是一个指向要显示字符串的指针
第3个参数是消息框本身的标题。
第4个参数是指定消息框的内容和形为(即该消息框有几个按钮、文本对齐等状态,可以在20多个属性值中进行组合)

MessageBox的第4个参数可以是在WINUSER.H中定义的一组前缀以MB_开始的常数组合.
可以使用C语言的"或"(|)运算符将下面显示的三组中各选一个常数组合起来指定消息框的内容和形为:

显示哪些按钮:
#define MB_OK 0X00000000L
#define MB_OKCANCEL 0X00000001L
#define MB_ABORTRERYGNORE 0X00000002L
#define MB_YESNOCANCEL 0X00000003L
#define MB_YESNO 0X00000004L
#define RERYCANCEL 0X00000005L

焦点在哪个按钮上:
#define MB_DEFBUTTON1 0X00000000L
#define MB_DEFBUTTON2 0X00000100L
#define MB_DEFBUTTON3 0X00000200L
#define MB_DEFBUTTON4 0X00000300L

图示的外观:
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L

图示的某些有替代名称:
#define MB_ICONWARNING MB_ICONEXCLAMATION
#define MB_ICONERROR MB_ICONHAND
#define MB_ICONINFORMATION MB_ICONASTERISK
#define MB_ICONSTOP MB_ICONHAND

示例:
MessageBox(NULL, "Hello, Windows!","hello", MB_OK );
MessageBox(NULL, "Hello, Windows!","HelloMsg", MB_YESNO|MB_ICONEXCLAMATION) ;
MessageBox(NULL, "Hello, Windows!","HelloMsg", MB_YESNO|MB_DEFBUTTON1) ;//表示窗口出来后焦点 focus落在Yes(第一个)按钮上
参考技术C MessageBox()是Win32 API函数,他的返回值是0 1 2 4 8
MessageBox(NULL,"do you?","baby",MB_YESNO);
里点击是返回0 点击否返回1

如何使messagebox.show对话框,在3秒之后自动消失 C

参考技术A MessageBox.Show不支持你说的功能,不过你为什么不用一个放置在最前端的Label来实现呢?我现在的项目就是这么做的,你用ShowMsg方法代替MessageBox.Show,代码参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

void ShowMsg(string msg)

new Thread(() =>

TimeSpan ts = new TimeSpan(0, 0, 0, 1);
for (int i = 3; i > 0; i--)

// 如果强制不显示,则终止循环显示
if (_forceVisible)

_forceVisible = false;
return;

OperationLabelMethod(labTitle, msg + "\r\n" + i + "秒后关闭");
Thread.Sleep(ts);

OperationLabelMethod(labTitle, null);
).Start();
//MessageBox.Show(msg);

delegate void OperationLabel(Label lab, string txt);
/// <summary>
/// 通过委托方法设置或隐藏Label
/// </summary>
/// <param name="lab"></param>
/// <param name="txt"></param>
void OperationLabelMethod(Label lab, string txt)

if (lab.InvokeRequired)

OperationLabel method = OperationLabelMethod;
if(!this.IsDisposed)// 点保存,然后马上关闭窗体时,会导致this变成null了,所以这里要判断
Invoke(method, lab, txt);

else

if (string.IsNullOrEmpty(txt))

lab.Text = string.Empty;
lab.Visible = false;

else

lab.Text = txt;
lab.Visible = true;


本回答被提问者采纳

以上是关于C语言MessageBox问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言。。messagebox用法

C语言中messagebox的用法

c# 弹出式对话框 类似于c语言中的messagebox

关于C语言MessageBox求指点

C语言 MessageBox (NULL, "……", " ", MB_YESNO)

C#messagebox需引用哪个头文件