1. 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 ;
  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 ;
  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;

WindowsAPI每日一练(1) MessageBoxA的更多相关文章

  1. WindowsAPI每日一练(2) 使用应用程序句柄

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

  2. CSS3每日一练之内容处理-嵌套编号

    出处:http://www.w3cfuns.com/thread-5592229-1-17.html 1.大标题一   1.子标题   2.子标题   3.子标题2.大标题二   1.子标题   2. ...

  3. CSS3每日一练之选择器-结构性伪类选择器

    <!DOCTYPE HTML> <html> <head> <meta charset="gb2312"> <title> ...

  4. HTML5每日一练之progress标签的应用

    progress标签:从名字上来看,估计大家也能猜到这个标签是什么标签了,没错,他是一个进度条.在HTML5中我们终于可以不用模拟了. <progress id="W3Cfuns_pr ...

  5. HTML5每日一练之figure新标签的应用

    igure元素是一种元素的组合,可带有标题(可选).figure标签用来表示网页上一块独立的内容,将其从网页上移除后不会对网页上的其他内容产生影响.figure所表示的内容可以是图片.统计图或代码示例 ...

  6. HTML5每日一练之details展开收缩标签的应用

    details标签的出现,为我们带来了更好的用户体验,不必为这种收缩展开的效果再编写JS来实现.注:目前仅Chrome支持此标签. details有一个新增加的子标签——summary,当鼠标点击su ...

  7. 每日一小练——Eratosthenes 筛选法

    上得厅堂.下得厨房,写得代码.翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:Eratosthenes筛选法 内容: 求质数是一个非常普遍的问题,通常不外乎用数去除.除到不尽时,给定的数就是质数.可是 ...

  8. 每日一小练——高速Fibonacci数算法

    上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:高速Fibonacci数算法 内容:先说说Fibonacci数列,它的定义是数列:f1,f2....fn有例如以下规律: ...

  9. linux每日一练:Enable multithreading to use std::thread: Operation not permitted问题解决

    linux每日一练:Enable multithreading to use std::thread: Operation not permitted问题解决 在linux在需要使用c++11时会遇到 ...

随机推荐

  1. Retrofit2 项目配置

    在项目的 app  build.gradle 文件中加入 dependencies { // Retrofit2implementation 'com.squareup.retrofit2:retro ...

  2. java核心技术笔记

    1.类和对象 第四章:面向对象 日历的作用是提供某个时间点的信息 查询设置信息:GregorianCalendar now = new GregorianCalendar() int month = ...

  3. C#Web从0到1—创建一个web并从VS集成的SQLlocalDB数据库中查询数据

    软件说明: VS2017,腾讯云服务器10元1个月,系统Win2012 R2标准版 第一步:建立第一个网页 建立工程 建好后,可以打开View选项打开项目资源浏览器和工具箱,后文会多次用到这两个版面 ...

  4. HTTP协议实际使用笔记

    mozilla的帮助文档: https://developer.mozilla.org/zh-CN/docs/Web/HTTP HTTP协议详解(转) php http头设置相关信息 这个2篇最好先看 ...

  5. ZOJ 4062 - Plants vs. Zombies - [二分+贪心][2018 ACM-ICPC Asia Qingdao Regional Problem E]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4062 题意: 现在在一条 $x$ 轴上玩植物大战僵尸,有 $n$ ...

  6. centos7更改网卡名称

    1.编辑/etc/sysconfig/grub文件,加入net.ifnames=0 biosdevname=0 2.执行命令grub2-mkconfig -o /boot/grub2/grub.cfg ...

  7. 【ArcGIS for Server】制作并发布GP服务--缓冲分析为例

    https://www.cnblogs.com/d2ee/p/3641279.html https://www.jianshu.com/p/5331fa708fe5 https://www.cnblo ...

  8. pandas 2

    ============== sdf={'rkey':[1,2,3,2],'name':['rkey1','rkey2','rkey3','rkey4']}sdf2={'lkey':[1,2,3],' ...

  9. HTML基础之HTML标签-html header(meta,title) html body(p,br,h,form,div,span,input,lable)

    摘自:http://www.imdsx.cn/index.php/2017/07/27/html0/ 一.HTML标签 <!DOCTYPE html> <!--标准的html规则,类 ...

  10. docker容器与镜像

    就像cad图层概念 数据卷就是为了完成数据持久化操作