飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4156|回复: 0

Windows API一日一练 messagebox

[复制链接]
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-5-25 18:50:35 | 显示全部楼层 |阅读模式
    本帖最后由 whypro 于 2010-5-25 18:53 编辑


    四、messagebox
    为了显示提示信息给用户,Windows是提供了一个非常方便的API函数MessageBox给用户使用,使用这个API函数可以显示简单的文字信息出来,提醒或提示用户进行下一步操作。
    函数声明如下:
    WINUSERAPI
    int
    WINAPI
    MessageBoxA(
        __in_opt HWND hWnd,
        __in_opt LPCSTR lpText,
        __in_opt LPCSTR lpCaption,
        __in UINT uType);
    WINUSERAPI
    int
    WINAPI
    MessageBoxW(
        __in_opt HWND hWnd,
        __in_opt LPCWSTR lpText,
        __in_opt LPCWSTR lpCaption,
        __in UINT uType);
    #ifdef UNICODE
    #define MessageBox MessageBoxW
    #else
    #define MessageBox MessageBoxA
    #endif
    // !UNICODE


    从上面可以看出,Windows的API是两种声明,一种是使用到ANSI编码,一种是使用到UNICODE编码的API函数。通过宏定义把这两种API名称统一到MessageBox的声明。这是一种使用选择不同API的技术,在今后的编程里,大多数都需要使用UNICODE编码了,因为可以适应不同国家的语言显示,可以国际化编程,特别对于中文支持更加需要UNICODE编程。
    下面来解释一下参数的定义:
    hWnd是指向父窗口的句柄,如果没有父窗口,可以把这个参数设置为NULL。
    lpText是需要显示的文字。显示字符串的起始地址。
    lpCaption是在窗口上标题显示。
    uType是窗口组合按钮和显示图标的类型。后面再详细说明。
    返回值是一个整数,如果有取消按钮,并且按下ESC键就返回IDCANCEL。如果有其它按钮,并且按下,就返回相应的值。主要的值如下:
    IDABORT 放弃按钮
    IDCANCEL取消按钮
    IDCONTINUE 继续按钮
    IDIGNORE 忽略按钮
    IDNO 否按钮
    IDOK 确定按钮
    IDRETRY 重试按钮
    IDTRYAGAIN 重试按钮
    IDYES 是按钮

    演示例子如下:
      
    上面显示的代码是:
    //MB_DEFBUTTON4
    int CMsgBox::Show_MB_DEFBUTTON4(void)
    {//显示MB_DEFBUTTON4。
    return ::MessageBox(NULL, _T("MB_YESNOCANCEL|MB_DEFBUTTON4|MB_HELP"),
           _T("第一个应用程序"), MB_YESNOCANCEL|MB_DEFBUTTON4|MB_HELP|MB_ICONQUESTION);
    }




    uType常用的选择值如下:
    按钮类型:
    MB_ABORTRETRYIGNORE
    MB_CANCELTRYCONTINUE
    MB_HELP
    MB_OK
    MB_OKCANCEL
    MB_RETRYCANCEL
    MB_YESNO
    MB_YESNOCANCEL

    图标类型:
    MB_ICONEXCLAMATION
    MB_ICONWARNING
    MB_ICONINFORMATION
    MB_ICONASTERISK
    MB_ICONQUESTION
    MB_ICONSTOP
    MB_ICONERROR
    MB_ICONHAND

    设置缺省按钮值:
    MB_DEFBUTTON1
    MB_DEFBUTTON2
    MB_DEFBUTTON3
    MB_DEFBUTTON4

    修改显示信息窗口的属性:
    MB_APPLMODAL
    MB_SYSTEMMODAL
    MB_TASKMODAL
    MB_RIGHT
    MB_RTLREADING
    MB_SETFOREGROUND
    MB_TOPMOST
    MB_SERVICE_NOTIFICATION
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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