MessageBox函数的返回值

MessageBox()函数的常用返回值

IDABORT:Abort 按钮被选中。

IDCANCEL:Cancel按钮被选中。

IDIGNORE:Ignore按钮被选中。

IDNO:NO按钮被选中。

IDOK:OK按钮被选中。

IDRETRY:RETRY按钮被选中。

 IDYES:YES按钮被选中。

附上原书MessageBox对第四个参数的扩展描述

MessageBox的第四个参数可以是在WINUSER.H中定义的一组以前缀MB_开始的常数的组合。您可从第一组中选择一个常数指出希望在对话框中显示的按钮:

#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                               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

虽然只有少数其它MB_常数,但您可以自己参考表头文件或 / Platform SDK / User Interface Services / Windowing / DialogBoxes/ Dialog Box Reference / Dialog Box Functions里的文件。

    

学写windows程序。之前老师就推荐过《windows程序设计》,自己也从图书馆借来读过,总感觉看不懂。经过一年多的积累,重读这本书,纪录下历程作为积累。

    我个人不是计算机专业的,作为一个业余爱好,不足之处请多指教。

MessageBox的函数原型为:

int WINAPIMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

在 windows程序设计 中

Charles Petzold 所举实例如下

#include<windows.h>
 
int WINAPIWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
 
                   PSTR szCmdLine, intiCmdShow)
 
{
 
MessageBox(NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0);
 
return 0 ;
 
}


运行后结果如图所示———一个简单的消息框和一个确定按钮。点击确定后直接退出程序了。没有什么功能,根据以前学过的vb和delphi的经验,任何按钮下都应该有可以实现某种特殊功能。

于是百度一下相关,找到类似的例子,我把它改成这样

UINT nRet =MessageBox(NULL, L"确定要删除此记录?", L"提示", MB_OKCANCEL |MB_ICONERROR);
    if (nRet == IDOK)
    {
        //MessageBox(NULL,TEXT("123"), TEXT("OK"), NULL);
        //功能1
    }
   
    else if (nRet == IDCANCEL)
    {
        //MessageBox(NULL, TEXT("11"),TEXT("cancel"), NULL);
        //功能2
    }
return 0 ;

运行结果如下


这里我们定义了一个UINT (MessageBox函数原型的最后一个参数)类型名为nRet 的参数以接收用户选择的按钮;

语句if (nRet == IDOK)中IDOK和IDCANCEL一样都是常数。

按下确定后执行了

MessageBox(NULL,TEXT("123"), TEXT("OK"), NULL);

实现了我们想要的功能.

/

修改按钮文本(一般用于国际化)   
  HHOOK   hHook;   
  LRESULT   __stdcall   CBTHookProc(   long   nCode,WPARAM   wParam,LPARAM   lParam)   
  {   
      if   (nCode==HCBT_ACTIVATE)   
      {   
      SetDlgItemText((HWND)wParam,IDYES,"&Yes");   
      SetDlgItemText((HWND)wParam,IDNO   ,"&No");   
      SetDlgItemText((HWND)wParam,IDOK,"&OK");   
      SetDlgItemText((HWND)wParam,IDCANCEL,"&Cancel");   
      UnhookWindowsHookEx(hHook);   
      }   
      return   0;   
  }   
  使用方法:   在调用MessageBox前加入以下函数
  hHook=SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);  

/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值