zoukankan      html  css  js  c++  java
  • 学习:MessageBox API

    函数功能:

    MessageBox 函数用于显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。

    消息框中返回一个整数值,该值指示用户单击了哪个按钮。

    API 函数原型:

    注释:In 说明该参数是输入的,opt 说明该参数是可选参数。

    int WINAPI MessageBox(
    In_opt HWND hWnd,
    In_opt LPCTSTR lpText,
    In_opt LPCTSTR lpCaption,
    In UINT uType
    );

    具体说明参考:https://fishc.com.cn/forum.php?mod=viewthread&tid=46730&extra=page%3D1%26filter%3Dtypeid%26typeid%3D420

    示例代码:

    #include<windows.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
    	MessageBox(NULL, TEXT("This is My First MessageBox"), TEXT("Message"), MB_OK);
    	return 0;
    }
    

    实现1:一个含有"中止","重试"和"跳过"三个按钮在里面的对话框

    我们可以在MessageBox的第四个参数utype中发现 MB_ABORTRETRYIGNORE 有"中止","重试"和"跳过"三个按钮在里面,那么我们也可以实现

    对于其中MB_OK | MB_ABORTRETRYIGNORE代码中的|的理解:其实都是进行了宏定义

    那么|操作就可以理解为或操作,有一则为一

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
    	MessageBox(NULL, TEXT("This is My First MessageBox"), TEXT("Message"), MB_OK | MB_ABORTRETRYIGNORE);
    	return 0;
    }
    

    对于代码中TEXT的理解:其实是为了解决编码的问题,如果一些字符是单字节,而有些字符又是双字节,就会导致不统一,我们进入TEXT的定义中发现

    再到__TEXT中发现进行L粘连quote,如果是中文字符的话就会进行UNICODE编码处理

    关于UNICODE的知识参考:https://fishc.com.cn/forum.php?mod=viewthread&tid=124473&highlight=Unicode%2B%B5%C4%BD%E2%BE%C8%B7%BD%B0%B8


    实现2:只有点击是按钮,才能结束MessageBox

    我们通过发现返回值为IDYES的时候才会是点击是的按钮,那么我们实现可以通过if来判断

    #include<windows.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
    	int ret;
    	while (true) {
    		ret = MessageBox(NULL, TEXT("This is My First MessageBox"), TEXT("Message"), MB_YESNO); //利用变量ret来接收返回值
    		if (ret == IDYES) {
    			break;
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    Sitecore 9 为什么数据驱动的组织选择它
    Sitecore 个性化
    Sitecore 9 您应该了解的所有新功能和变化
    Sitecore客户体验成熟度模型之旅
    Sitecore 8.2 工作流程
    sitecore-多变量测试与A / B测试概念论述
    sitecore
    cesium1.65api版本贴地贴模型标绘工具效果(附源码下载)
    leaflet结合geoserver利用WFS服务实现图层新增功能(附源码下载)
    openlayers6实现webgl点图层渲染效果(附源码下载)
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11890182.html
Copyright © 2011-2022 走看看