wndows程序设计之书籍知识与代码摘录-封装一个类似printf的messagebox
//----------------------------------------- //本程序展示了如何实现MessageBoxPrintf函数 //本函数能像printf那样格式化输出 //摘录自:《windows程序设计第五版》 //----------------------------------------- #include<windows.h> #include<tchar.h> #include<stdio.h>int CDECL MessageBoxPrintf(TCHAR * szCaption, TCHAR * szFormat, ...) {TCHAR szBuffer[1024];va_list pArgList;va_start (pArgList, szFormat);_vsntprintf_s(szBuffer,sizeof(szBuffer)/sizeof(TCHAR), sizeof(szBuffer) / sizeof(TCHAR),szFormat, pArgList);//---------------------------------------------------------------------------------------------------------------------------------//原文使用_vsntprintf(szBuffer, sizeof(szBuffer) / sizeof(TCHAR),szFormat, pArgList); vs认为此函数具有安全性问题 因此我替换成上边的函数//--------------------------------------------------------------------------------------------------------------------------------- va_end(pArgList);return MessageBox(NULL,szBuffer,szCaption,0); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {int cxScreen;int cyScreen;cxScreen = GetSystemMetrics(SM_CXSCREEN);cyScreen = GetSystemMetrics(SM_CYSCREEN);MessageBoxPrintf(TEXT("SCREEN SIZE"),TEXT("您的视屏显示器:\nWIDE:%i\nHIGH: %i"),cxScreen,cyScreen);return 0; }
这个函数使用了可变参数 这样就出现了一些陌生的东西,解释如下
CDECL
va_start va_end等
函数名称,读取可变参数的过程其实就是在堆栈中,使用指针,遍历堆栈段中的参数列表,从低地址到高地址一个一个地把参数内容读出来的过程
在学习windows程序设计时此函数可以给c/c++程序员一份熟悉感。。。。。。。。。。。
转载于:https://www.cnblogs.com/xdblog/p/4821517.html
wndows程序设计之书籍知识与代码摘录-封装一个类似printf的messagebox相关推荐
- java绘制聊天气泡代码_封装一个canvas画对话气泡的函数
quadraticCurveTo(cp1x, cp1y, x, y) 绘制二次贝塞尔曲线,cp1x,cp1y为一个控制点,x,y为结束点.开始点由moveTo,或者前面一次的结束点作为下次调用的开始点 ...
- c语言设计知识,C语言程序设计的初步知识.doc
C语言程序设计的初步知识.doc 第二章 C语言程序设计的初步知识一.选择题1在C 语言中,下列类型属于构造类型的是 .(0级) A)整型 B)字符型 C)实型 D)数组类型2在C 语言中,下列类型属 ...
- 如果t是整数用c语言表达式,C语言程序设计习题及习题参考答案 任文 孔庆彦 全书习题及习题参考答案 第2章 C程序设计的初步知识.pdf...
第 2 章 C 程序设计的初步知识 2-1 选择题 1.以下不能用作用户标识符的是( ) A)_26 B)case C)scanf D)Double 2 .C 语言中的数据的基本类型包括( ) A)整 ...
- C语言人民币的构造的关键,C语言程序设计 教学课件 任文 孔庆彦电子课件 全书习题及习题参考答案 第2章 C程序设计的初步知识.pdf...
第 2 章 C 程序设计的初步知识 2-1 选择题 1.以下不能用作用户标识符的是( ) A)_26 B)case C)scanf D)Double 2 .C 语言中的数据的基本类型包括( ) A)整 ...
- (十二) 完整注释的代码摘录
title: 完整注释的代码摘录 date: 2019/4/23 20:40:00 toc: true --- 完整注释的代码摘录 作者网页 #include <linux/kernel.h&g ...
- 从文本中提取知识图谱代码比较好的,代码对齐,可以使用的
从文本中提取知识图谱代码比较好的,代码对齐,可以使用的 https://blog.csdn.net/fendouaini/article/details/102987373 https://blog. ...
- ruby网站部署到服务器,入门知识: 把代码部署到服务器, SSH
入门知识: 把代码部署到服务器, SSH 2015-07-28 16:28 访问量: 2868 分类: 技术 如何登陆远程服务器呢? $ ssh root@your.server.com -p 334 ...
- python内置函数用来打开或创建文件_2020年《python程序设计》基础知识及程序设计598题XS[含参考答案]...
2020年<python程序设计>基础知识及程序设计 598题[含参考答案] 一.填空题 1.表达式 len('中国'.encode('utf-8')) 的值为___________.(6 ...
- 沈航C语言上机实验题答案,大学大一c语言程序设计实验室上机题全部代码答案(实验报告).doc...
大学大一c语言程序设计实验室上机题全部代码答案(实验报告) C语言实验报告 实验1-1: hello world程序: 源代码: #include main() { printf("hell ...
最新文章
- 智能车竞赛车模轮子与电机齿轮的参数
- 实例介绍,如何在开发中将各层日志归类输出.
- reuse project css less path folder hierarchy issue
- react 最佳入门_miaov-React 最佳入门
- 前端学习(3254):react中todolist制作静态组件
- 比较文本差异的工具_Linux 开发的五大必备工具 | Linux 中国
- windows下Apache虚拟主机配置
- Linux 命令(77)—— killall 命令
- 类库、通用变量、is和as、委托
- Office 2007无法卸载也无法安装的解决
- 管理学定律七:责任分散效应与帕金森定律
- 如何看到并删除电脑的操作记录
- 2022年身份证号码信息查询API接口分享
- 橙单微服务的权限部分之过滤规则
- c语言中查重,体验CCleaner查重功能,快速找出电脑中的重复文件
- C++最佳实践 | 5. 可移植性及多线程
- js的初识及数据类型简介
- 智能城市应用中的安全和隐私:挑战和解决方案
- 安卓贴图源码---记录旋转后位置..类似in/百度魔图
- saveOrUpdate Transaction silently rolled back because it has been marked as rollback-only