鱼C论坛

 找回密码
 立即注册
查看: 1613|回复: 0

[学习笔记] 《WINDOWS程序设计》(013)1.3 你的第一个Windows程序-1.3.5 MessageBox函数

[复制链接]
发表于 2018-10-16 22:37:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.3.5  MessageBox函数

      MessageBox函数是用来显示短信息的。尽管形式比较单一,MessageBox所显示的小小窗口实际上也是一个对话框。
【MessageBox函数详解见本论坛地址(由小甲鱼注释)https://fishc.com.cn/thread-46730-1-1.html
      MessageBox的第一个参数通常是窗口句柄。它的具体意思留到第3章再谈。第二个参数就是将要在信息框里出现的文本字符串第三个参数是将要在标题栏上显示的文本字符串。在HELLOMSG.C中,这些文本串都被打包在TEXT宏代码(Macro)里面。一般来说,并不需要把所有的字符串都打包到TEXT宏代码里面,之所以这样做是因为这样在把程序转换成Unicode时会方便很多。我将在第2章里详细讨论这一点。

      MessageBox的第四个参数是以前缀MB_打头的一些常量组合。WINUSER.H中定义了这些相关常量。从以下第一个常量集中,你可以任选一个来表示在对话框里希望用哪种按钮:
      #define MB_OK                                 0x00000000L
      #define MB_OKCANCEL                         0x00000001L
      #define MB_ABORTRETRYIGNORE         0x00000002L
      #define MB_YESNOCANCEL                 0x00000003L
      #define MB_YESNO                         0x00000004L
      #define MB_RETRYCANCEL                 0x00000005L

      当你把HELLOMSG中的第四个参数选成0时,那就只显示OK按钮。你可以通过使用C里面的OR(|)运算符把一个上述按钮常量跟下列常量组合起来,来描述哪个按钮为默认按钮:
      #define MB_DEFBUTTON1                0x00000000L
      #define MB_DEFBUTTON2                0x00000100L
      #define MB_DEFBUTTON3                0x00000300L
      #define MB_DEFBUTTON4                0x00000300L

      你还可以用下列某个常量来指定消息框中所显示的图标:
      #define MB_ICONHAND                        0x00000010L
      #define MB_ICONQUESTION                 0x00000020L
      #define MB_ICONEXCLAMATION           0x00000010L
      #define MB_ICONASTERISK                  0x00000010L

      这些图标当中,有些还另有别名:
      #define MB_ICONWARNING                 MB_ICONEXCLAMATION
      #define MB_ICONERROR                     MB_ICONHAND
      #define MB_ICONINFORMATION         MB_ICONASTERISK
      #define MB_ICONSTOP                       MB_ICONHAND

      还有一些其他的MB_常量,但是你尽可通过自己查看头文件,或者翻阅/Platform SDK/User Interface Services/Windowing/Dialog Boxes/Dialog Box Reference/Dialog Box Functions之下的文档现已更改为:/MSDN Library/Win32 and COM Development/User Interface/Windows User Interface/windowing/windows/Dialog Boxes/,对它们加以了解。

      在我们这个范例程序中,MessageBox函数的返回的数值为1,更精确地说返回IDOK。在WINUSER.H中,IDOK定义为1。根据消息框中给出的其他按钮,MessageBox函数也可能返回ISYES、ISNO、IDCANCEL、IDABORT、IDRETRY或IDIGNORE。

      到底我们这个小程序是否真正和K&R的“Hello, world”程序等价?你可能认为不是,因为MessageBox函数并不能提供像“Hello,world”程序中的printf函数那样众多的格式化功能。但是下一章,我们就会看到要怎样编写能像printf那样随意格式化的MessageBox。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
╰☆忝婲雨☆╮ + 1 + 1 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 00:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表