当前位置:首页 > 百科

MSGBOXPARAMS

函数MessageBoxIndirect要使用到的包含有显示一个消息(对话框信息)的数据结构。

在用于MessageBoxIndirect函数的时候,以常数指针的形式传入函数。

  • 中文名称 MSGBOXPARAMS
  • 结构原型 C++版
  • 类型 UINT,无符号整数
  • 应用 程序编制

构原型

C++版

  typedef struct {

  UINT cbSize;

  HWND hwndOwner;

  来自HINSTANCE hInstance;

  LPCTSTR lpszText;

  LPCTSTR lpszCaption;

  DWORD dwStyle;

  厚主易精似训苗极缺混也LPCTSTR lpszIc360百科on;

  DWORD_PTR dwContextHel群强因赶普织径似pId;

  MSGBOXCALLBACK lpfnMsgBo奏整各呢身都朝育础数xCallback;

  DWORD dwLanguageId;

  } MSGBOXPARAMS , *PMSGBOXPARAMS;

VB版

  这里使却收够理边善吃用的施公有声明,如果要转为私有,请将Pub跳率金lic改为Private

剂级断强带两朝  public Type MSGBOXPARAMS

均朝你安  cbSize As Long

  hwndOwner As Long

  hInstance As Lon石假他晚机演导石延g

  lpszText As String

际本跑承  lpszCaption As String

  dwStyle As Long

  lpszIcon As String

  dwContextHelpId As Long

  lpfnMsgBoxCallback A化充题心奏月西汉稳剂s Long

  dwLanguageId As 诉胡修Long

  End T李间督欢ype

成员解释

cbSize

  类型:UINT,无念者符号整数

  包含着讨数马异办械市这个结构的大小,以字节计算。在C++中使用sizeof(MSGBOXPARAMS)来获取,VB中使用Len(MSGBOXPARAMS)来获取。

hwndOwner

  类型:HWND,句柄

  对话框所有者窗口的句柄。这个参数可以为NULL。如果在VB中,填写调用函数的过程所在的窗口句柄或主窗口的句柄;等同于C++中填写NULL的是传递0。

hInstance

  类型:HINSTANCE,实例的句柄

  包含用于lpszIcon参数的图标(ICON)资源ID的,和用于lpszText 参数或lpsz吗领握Caption 参数的字符串资源ID的模块句柄。如果不是使用图标与字符串资源,这个参数可以传NULL(C++)或0(VB)。当这个参数传递NULL(或0)的时候,lpszIco再住缺n、lpszText、 lpszCaption参数直接传入对应的指针。如果这个参数传递不为NULL(或0),那么就应该传递程序的实例句柄,VB中使用App.hInstance来获取自己当前程序的实例句柄。

lpszText

  类型:LPCTSTR,字符串指针(VB中为String类型的字符串)

  一个以NULL结尾的字符串(当hInstance传递NULL的时候),或者字符串资源的ID(当hInstance不为NULL的时候),包含着消息要显示的内容。VB中就是String类型的字符串,VB的用户请无视以NULL结尾这句话

lpszCaption

  类型:LPCTSTR,字符串指针

  一个字符串,类似lpszText,包含着消息的标题,默认用"错误"作为标题。

dwStyle

  类型:DWORD(VB中为Long)

  设置对话框的内容和行为。这个参数可以是描述MessageBoxEx函数 的uType参数的旗标(flags)的组合。如下表。

  此外,你可以指定MB_USERICON旗标 (C++:0x00000080L;VB:&H80&)如果你想消息框显示lpszIcon成员指定的图标。

  描述消息框显示的按钮,由下面的数值之一指定(下面是显示按钮的旗标,只能选择一个。后述中无特别注明的情况下可以与其他表的常数进行组合)

  常数名称

  C++值

  VB值

  含义

  MB_ABORTRETRYIGNORE

  0x00000002L

  &H2&

  消息框包含三个按钮:终止,重试,忽略。这个旗标一般用与错误提示与处理,让用户选择错误的处理方法。

  MB_CANCELTRYCONTINUE

  0x00000006L

  &H6&

  消息框包含三个按钮:取消,重试,继续。可以用这个旗标代替MB_ABORTRETRYIGNORE

  MB_HELP

  0x00004000L

  &H4000&

  在消息框增加一个帮助按钮。当用户单击"帮助"按钮的时候,或者按下F1的时候,系统会发送一个WM_HELP消息到消息框的所有者,这个所有者由hwndOwner成员指定,如果要使用这个旗标,就不能将hwndOwner设为NULL(或0)。

  MB_OK

  0x00000000L

  &H0&

  消息框包含一个按钮"OK"。这个是默认值

  MB_OKCANCEL

  0x00000001L

  &H1&

  消息框包含两个按钮:OK和"取消"

  MB_RETRYCANCEL

  0x00000005L

  &H5&

  消息框包含两个按钮:"重试" 和"取消"

  MB_YESNO

  0x00000004L

  &H4&

  消息框包含两个按钮:"是" 和"否"

  MB_YESNOCANCEL

  0x00000003L

  &H3&

  消息框包含三个按钮:"是" ,"否"和"取消"

  在消息框中显示的图标,由下面的数值之一指定(下面是显示图标的旗标,只能选择一个。)

  常数名称

  C++值

  VB值

  含义

  MB_ICONEXCLAMATIO

  

  NMB_ICONWARNING

  0x00000030L

  &H30&

  消息框显示一个感叹号。数值和效果与MB_ICONEXCLAMATION是一样的,只是你想表达的初衷不同,上一个代表的是传达信息,这一个侧重的是发出警告。

  实际上,无论初衷是怎么样,这两个可以通用,分开两个只是为了让源程序更容易阅读。

  但是如果想发出信息,建议使用MB_ICONINFORMATION、NMB_ICONASTERISK之一,图标将显示小写的i代表infomation(信息);

  如果要发出警告,建议使用

  MB_ICONSTOP、MB_ICONERROR、

  MB_ICONHAND之一,这样图标会显示叉。

  这样的消息框的指示性可能会更强一些。

  MB_ICONINFORMATIO

  

  NMB_ICONASTERISK

  0x00000040L

  &H40&

  消息框将会显示一个小写的"i",这个一般用作有消息需要让用户知晓,重在消息本身而不是程序当前的状态。

  MB_ICONQUESTION

  0x00000020L

  &H20&

  消息框显示一个问号。问号消息图标不在引人注目是因为它不能明显地指明消息的类型,而且这样的措辞可以运用到任何的消息类型上。此外,用户可能拒绝问号标记的帮助消息。因此,不要在你的消息框中用这个问号标记消息符号。系统继续支持这个仅仅是为了保持对过去的兼容性。

  MB_ICONSTOP、

  MB_ICONERROR、

  MB_ICONHAND

  0x00000010L

  &H10&

  一个停止符号(一个红叉)显示在消息框上。

  描述默认按钮,由下面的数值之一指定(下面是确定默认按钮的旗标,只能选择一个,应该和第一张表中选择的按钮类型相匹配,可以与第二张表的常数进行组合)

  常数名称

  C++值

  VB值

  含义

  MB_DEFBUTTON1

  0x00000000L

  &H0&

  第一个按钮是默认按钮。除非MB_DEFBUTTON2, MB_DEFBUTTON3, 或MB_DEFBUTTON4是指定的。

  MB_DEFBUTTON2

  0x00000100L

  &H100&

  第二个按钮是默认按钮

  MB_DEFBUTTON3

  0x00000200L

  &H200&

  第三个按钮是默认按钮

  MB_DEFBUTTON4

  0x00000300L

  &H300&

  第四个按钮是默认按钮。一般来说,如果不使用MB_HELP旗标,最多只有三个按钮,但是如果使用了这个旗标,那么第四个按钮就是由MB_HELP旗标指定的帮助按钮。

  描述对话框的模式,由下面的数值之一指定(下面是对话框模式的旗标,只能选择一个。)

  Value

  C++值

  VB值

  Meaning

  MB_APPLMODAL

  0x00000000L

  &H0&

  再通过hWnd参数指定的窗体继续工作之前,用户必须作出响应(由于这是MessageBox函数的描述中出现的表格,在这里应该是本结构的hwndOwner成员指定的窗体)。然而,用户可以移动其他线程的窗体,或者在其中工作。

  这取决于(hwndOwner成员指定的所有者)窗口在程序中的序列(Z序列,反应窗体之间上下层叠关系的值),用户可能可以移动当前线程内的其他窗体。(hwndOwner成员指定的所有者窗口的)所有子窗体都被自动禁用,但是弹出式窗体除外。MB_APPLMODAL 常数是默认值,如果既没有MB_SYSTEMMODAL也没有MB_TASKMODAL 被指定

  MB_SYSTEMMODAL

  0x00001000L

  &H1000&

  等同于有WS_EX_TOPMOST样式的MB_APPLMODAL消息框。用系统式消息框去通知重要的用户,潜在的破坏性错误需要立即引起重视(例如:内存溢出)。

  MB_TASKMODAL

  0x00002000L

  &H2000&

  等同于如果hWnd为NULL则属于当前线程的顶级窗体被禁用的MB_APPLMODAL。当调用程序或库没有可以用的窗口句柄但仍然需要预防输入到调用的线程中的其他窗体或没有挂起的其他线程时用这个旗标。简单来说,这个旗标挂起系统中的全部顶级窗体线程以防止以外的输入。

  指定其他选,,由下面的数值的一个或多个指定(下面是其它选项的旗标,不限选择一个。)

  常数名称

  C++值

  VB值

  含义

  MB_DEFAULT_DESKTOP_ONLY

  0x00020000L

  &H20000&

  等同于交互式窗口的桌面。更多的信息,参见Window Stations 。如果当前的输入桌面不是默认桌面,MessageBox不会返回直到用户选择默认桌面。

  MB_RIGHT

  0x00080000L

  &H80000&

  The text is right-justified. 文本右对齐

  MB_RTLREADING

  0x00100000L

  &H100000&

  显示的消息和标题文本使用从右到左的阅读顺序以支持希伯来文和阿拉伯文语言系统

  MB_SETFOREGROUND

  0x00010000L

  &H10000&

  消息框变成前景窗体。本质上是系统对消息框调用theSetForegroundWindow函数 。根据theSetForegroundWindow函数的描述,系统使指定窗口放到前台并激活窗口的线程,键盘输入被引导到这个窗口,并为这个窗口提供稍高的优先级。使用这个旗标可让消息框弹出到Z序列的最前方,让用户最快看到这个消息框。

  MB_TOPMOST

  0x00040000L

  &H40000&

  消息框用WS_EX_TOPMOST窗口样式创建

  MB_SERVICE_NOTIFICATION

  0x00200000L

  &H200000&

  调用者是一个以事件通知用户的服务。函数显示一个消息框在当前激活的桌面,尽管那里没有用户登录到电脑上。

  终端服务:如果调用线程模拟令牌,该函数将在会话的消息框中指定模拟令牌。

  如果这个旗标被设置,hWnd参数(在这里是hwndOwner)必须是NULL。这是以便消息框出现在不与hWnd对应的桌面。

  关于注意到使用这个旗标的安全性考虑的信息,参见Interactive Services 。特别地,注意到这个旗标能钩在锁定的桌面上产生交互式内容,和因此应该用于一个有限的场景,例如资源枯竭。

lpszIcon

  类型:LPCTSTR。字符串指针

  图标资源的ID。这个参数可以是一个以null结尾的字符串,或者是通过MAKEINTRESOURCE 宏获得的作为图标资源ID的整数。去装在一个标准系统定义的图标,设置hInstance成员为NULL,并且设置lpszIcon为LoadIcon函数的值列表之一。如果dwStyle成员没有指定MB_USERICON旗标,这个成员被忽略。

dwContextHelpId

  类型:DWORD_PTR。双字指针。VB中为按地址传递的Long变量。

  帮助内容的ID。如果一个Help事件发生,这个值在消息框发送到所有者窗口或回调函数的HELPINFO结构 中被指定。

lpfnMsgBoxCallback

  类型:MSGBOXCALLBACK。MsgBoxCallback回调函数的函数指针。VB中传递AdressOf MsgBoxCallback。

  一个处理消息框帮助信息的回调函数的指针。回调函数原型如下:

  C++版:

  VOID CALLBACK MsgBoxCallback(LPHELPINFO lpHelpInfo);

  VB版(必须定义在模块中):

  public Type POINTAPI

  x As Long

  y As Long

  End Type

  public Type HELPINFO

  cbSize As Long

  iContextType As Long

  iCtrlId As Long

  hItemHandle As Long

  dwContextId As Long

  MousePos As POINTAPI

  End Type

  public sub MsgBoxCallback(ByRef lpHelpInfo As HELPINFO)

  '处理帮助回调消息的代码

  End sub

dwLanguageId

  类型:双字

  包含在原先定义的按钮中的文本的语言。这个值必须是MAKELANGID 宏的返回值。关于支持的语言ID列表,参见Language Identifiers 。注:每一个Windows的地区性发行版(例如简体中文版)通常只包含有限的语言设置。因此,例如美国版提供LANG_ENGLISH,法国版提供LANG_FRENCH,德国版提供LANG_GERMAN,还有日本版提供LANG_JAPANESE。每一个版本提供LANG_NEUTRAL。这些有限的值可以用到dwLanguageId参数。在指定语言ID之前,你应该枚举在一个系统本地已经安装了的语言。

支持

  客户端最小支持

  Windows 2000 P来自rofessional 【仅桌面应用】

  服烧案假孩边果如务器最小支持

  Windows 2000 Professional 【仅桌面应用】

  头文件

  Winuser.h (include Windows.h360百科)

  Unicode 和ANSI 名

  MSGBOXPARAMSW (Unicode) 和MSGBOXPARAMSA (ANSI)

标签:

  • 关注微信
下一篇:酒之头酒

相关文章