zoukankan      html  css  js  c++  java
  • WindowsAPI每日一练(1) MessageBoxA

    WindowsAPI每日一练系列 :https://www.cnblogs.com/LexMoon/category/1246238.html
      WindowsAPI每日一练(1) WinMain

    要跟计算机进行交互,就需要计算机显示信息给人看到,或者发出声音给人听到,然后人看到或听到相应的信息后,再输入其它信息给计算机,这样就可以让计算机进行数据处理,把结果显示给我们。现在就来编写一个最简单的Windows应用程序,让它提示一行文字给我们看到,这就是简单的目标。 

     1 #include <windows.h>
     2 
     3 int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance
     4 HINSTANCE hPrevInstance, // handle to previous instance
     5 LPSTR lpCmdLine, // command line
     6 int nCmdShow // show state
     7 ){
     8     HWND hwnd = GetDesktopWindow();
     9     MessageBoxA(hwnd,"第一个例子","这是标题",MB_OK);
    10     return 0;
    11 }

     下图为VC++6.0中运行效果

     
    MessageBoxA(hwnd,text文本内容,title标题,按钮类型);

    hWnd: 此参数代表消息框拥有的窗口。如果为NULL,则消息框没有拥有窗口。

    按钮:

    按钮参数
    含义
    MB_OK
    默认值。有一个确认按钮在里面。
    MB_YESNO
    有是和否在里面。
    MB_ABORTRETRYIGNORE
    有Abort(放弃),Retry(重试)和Ignore(跳过)
    MB_YESNOCANCEL
    消息框含有三个按钮:Yes,No和Cancel
    MB_RETRYCANCEL
    有Retry(重试)和Cancel(取消)
    MB_OKCANCEL
    消息框含有两个按钮:OK和Cancel
     1 //按钮
     2 #define MB_OK 0x00000000L
     3 #define MB_OKCANCEL 0x00000001L
     4 #define MB_ABORTRETRYIGNORE 0x00000002L
     5 #define MB_YESNOCANCEL 0x00000003L
     6 #define MB_YESNO 0x00000004L
     7 #define MB_RETRYCANCEL 0x00000005L
     8 //图标
     9 #define MB_ICONHAND 0x00000010L
    10 #define MB_ICONQUESTION 0x00000020L
    11 #define MB_ICONEXCLAMATION 0x00000030L
    12 #define MB_ICONASTERISK 0x00000040L
    13 #define MB_USERICON 0x00000080L
    14 //图标声明
    15 #define MB_ICONWARNINGMB_ICONEXCLAMATION
    16 #define MB_ICONERRORMB_ICONHAND
    17 #define MB_ICONINFORMATIONMB_ICONASTERISK
    18 #define MB_ICONSTOPMB_ICONHAND
    19 //默认按钮声明
    20 #define MB_DEFBUTTON1 0x00000000L
    21 #define MB_DEFBUTTON2 0x00000100L
    22 #define MB_DEFBUTTON3 0x00000200L
    23 #if(WINVER>=0x0400)
    24 #define MB_DEFBUTTON4 0x00000300L//如果支持第四个MessageBox按钮的话,定义DEFButton4
    25 #endif
    26 //对话框模型定义
    27 #define MB_APPLMODAL 0x00000000L
    28 #define MB_SYSTEMMODAL 0x00001000L
    29 #define MB_TASKMODAL 0x00002000L
    30 #define MB_HELP 0x00004000L//是否拥有帮助按钮
    31 //特殊声明
    32 #define MB_NOFOCUS 0x00008000L
    33 #define MB_SETFOREGROUND 0x00010000L
    34 #define MB_DEFAULT_DESKTOP_ONLY 0x00020000L
    35 #define MB_TOPMOST 0x00040000L
    36 #define MB_RIGHT 0x00080000L
    37 #define MB_RTLREADING 0x00100000L

    图标:

    参数 含义
    MB_ICONEXCLAMATION
    一个惊叹号出现在消息框
    MB_ICONWARNING
    一个惊叹号出现在消息框
    MB_ICONINFORMATION
    一个圆圈中小写字母i组成的图标出现在消息框
    MB_ICONASTERISK
    一个圆圈中小写字母i组成的图标出现在消息框
    MB_ICONQUESTION
    一个问题标记图标出现在消息框
    MB_ICONSTOP
    一个停止消息图标出现在消息框
    MB_ICONERROR
    一个停止消息图标出现在消息框
    MB_ICONHAND
    一个停止消息图标出现在消息框

    形态:

    参数
    含义
    MB_APPLMODAL
    在hwnd参数标识的窗口中继续工作以前,用户一定响应消息框。但是,用户可以移动到其他线程的窗口且在这些窗口中工作。根据应用程序中窗口的层次机构,用户则以移动到线程内的其他窗口。所有母消息框的子窗口自动地失效,但是弹出窗口不是这样。如果既没有指定MB_SYSTEMMODAL也没有指定MB_TASKMOOAL,则MB_APPLMODAL为缺省的。
    MB_SYSTEMMODAL
    除了消息框有WB_EX_TOPMOST类型,MB_APPLMODAL和MB_SYSTEMMODAL一样。用系统模态消息框来改变各种各样的用户,主要的损坏错误需要立即注意(例如,内存溢出)。如果不是那些与hwnd联系的窗口,此标志对用户对窗口的相互联系没有影响。
    MB_TASKMODAL
    如果参数hwnd为NULL的话,那么除了所有属于当前线程高层次的窗口失效外,MB_TASKMODALL和MB_APPLMODAL一样。当调用应用程序或库没有一个可以得到的窗口句柄时,使用此标志。但仍需要阻止输入到调用线程的其他窗口,而不是搁置其他线程。

    其他:

    标志
    含义
    MB_DEFAULT_DESKTOP_ONLY
    接收输入的当前桌面一定是一个缺省桌面。否则,函数调用失败。缺省桌面是一个在用户已经纪录且以后应用程序在此上面运行的桌面。
    MB_HELP
    把一个Help按钮增加到消息框。选择Help按钮或按F1产生一个Help事件。
    MB_RIGHT
    文本为右调整
    MB_RTLREADING
    用在Hebrew和Arabic系统中从右到左的顺序显示消息和大写文本。
    MB_SETFOREGROUND
    消息框变为前景窗口。在内部系统为消息个调用SetForegroundWindow函数。
    MB_TOPMOST
    消息框用WS_EX_TOPMOST窗口类型来创建MB_SERVICE_NOTIFICATION。

    返回值:

    ID
    选择了……
    IDOK(1)
    OK
    IDCANCEL(2)
    CANCEL
    IDABORT(3)
    ABORT
    IDRETRY(4)
    RETRY
    IDIGNORE(5)
    IGNORE
    IDYES(6)
    YES
    IDNO(7)
    NO

    备注:

    通过将 uType 参数设置为相应的标志值,可以在消息框中系统图标,具体图标可参见MSDN网站。
    图标
    标志位值
     
    MB_ICONHAND, MB_ICONSTOP, 或者MB_ICONERROR
     
    MB_ICONQUESTION
     
    MB_ICONEXCLAMATION 或者 MB_ICONWARNING
     
    MB_ICONASTERISK 或者 MB_ICONINFORMATION
    添加两个从右到左标记 (RLMs),Unicode 格式字符中用 U+200F表示。在消息框显示字符串的开头被由 MessageBox 渲染引擎解释,以致造成 MessageBox 的阅读顺序,呈现为从右向左 (RTL) 。
    当您使用一个系统模式消息框指示时,当系统内存不足时,由 lpText 和 lpCaption 的参数的字符串不应被从资源文件,因为加载资源的尝试可能会失败。
    如果在一个对话框存在时创建一个消息框,则使用对话框的句柄作为hWnd 参数。hWnd参数不应指定为一个子窗口,就像对话框中的控件一样。
     1 #include<windows.h>
     2 //切记!当调用<windows.h>时,不要调用MFC!(Afx.h)
     3 int main()
     4 {
     5     int result = MessageBox( NULL , TEXT("这是对话框") , TEXT("你好") , MB_ICONINFORMATION|MB_YESNO);
     6     switch(result)/*注意!使用Unicode应用TEXT包围字串*/
     7 {
     8     case IDYES:MessageBox(NULL,TEXT("您选择了YES"),TEXT("YES"),MB_OK);break;
     9     case IDNO:MessageBox(NULL,TEXT("您选择了NO"),TEXT("NO"),MB_OK);break;
    10 }
    11 return 0;
    12 }

    第一步:弹出对话框。语句:

    1 int result = MessageBox(NULL,TEXT("这是对话框"),TEXT("你好"),MB_ICONINFORMATION|MB_YESNO);

    对话框弹出

    选择是:语句:

    1 case IDYES:MessageBox(NULL,TEXT("您选择了YES"),TEXT("YES"),MB_OK);break;

    选择否:语句:

    1 case IDNO:MessageBox(NULL,TEXT("您选择了NO"),TEXT("NO"),MB_OK);break;

     

  • 相关阅读:
    Jquery 改变样式
    2017年04月06日 开启博客之路
    SVN-简要说明
    wp8 入门到精通 高仿微信发信息 键盘不消失
    wp8 入门到精通 仿QQPivot 提示数量
    wp8 入门到精通 虚拟标示符 设备ID
    wp8 入门到精通 测量代码执行时间
    wp8 入门到精通 聊天控件
    wp8 入门到精通 抓包
    wp8 入门到精通 LINQ to SQL
  • 原文地址:https://www.cnblogs.com/LexMoon/p/windowsAPI01.html
Copyright © 2011-2022 走看看