有个坏消息,windows程序中不能使用printf函数
好消息是,仍然可以使用sptrinf和系列的其他函数来显示文本
下面观察printf和sprintf的定义
int printf(const char* szFormat,...);
int sprintf(char * szBuffer,const char* szFormat,...);
在console下,你可以这样输出:
#include<iostream>
#include<string>
using namespace std;
int main(){
printf("the sum of %i and %i is %i\n",5,3,5+3);
system("pause");
return 0;
}
下面用sprintf,跟上面是等价的:
#include<iostream>
#include<string>
using namespace std;
int main(){
char buffer[100];
sprintf(buffer,"the sum of %i and %i is %i",5,3,5+3);
puts(buffer);
system("pause");
return 0;
}
unicode:
如果UNICODE没有定义,那么:
typedef char TCHAR
如果UNICODE定义了,那么:
typedef wchar_t TCHAR
wchar_t跟char最大的不同是,一个是占用两个字节,一个是占用一个字节:
#include<iostream>
#include<string>
using namespace std;
int main(){
wchar_t p[]=L"hello";
cout<<wcslen(p)<<endl;
cout<<sizeof(p)<<endl;//输出12
system("pause");
return 0;
}
下面是用MessageBoxPrintf输出的例子:(GetSystemMetric很重要)
#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(szBuffer,sizeof(szBuffer)/sizeof(TCHAR),szFormat,pArgList);
va_end(pArgList);
return MessageBox(NULL,szBuffer,szCaption,0);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR scCmdLine,int iCmdShow){
int cxScreen,cyScreen;
cxScreen=GetSystemMetrics(SM_CXSCREEN);
cyScreen=GetSystemMetrics(SM_CYSCREEN);
MessageBoxPrintf(TEXT("ScrnSize"),TEXT("The screen is %i pixels wide by %i pixels high"),cxScreen,cyScreen);
return 0;
}
结果如下:
分享到:
相关推荐
Delphi 巧用GetSystemMetrics函数,获取屏幕宽度。
该软件是Delphi关于API的一个使用! 有详细说明文档和程序实例!
CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 DrawText 将文本描绘到指定的矩形中 DrawTextEx 与DrawText相似,只是加入了更多的功能 ...
这篇文章主要介绍了python实现windows桌面截图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... width=win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
VB基于API函数实现特殊菜单效果,实现水平展开的两级菜单或三级菜单,或者是带分隔条的菜单。程序调用GetSystemMetrics函数设定菜单高度,利用For循环添加菜单项。
妙用GetSystemMetrics函数 利用API和注册表获取系统信息上 VB快速调用系统对话框下 利用API和注册表获取系统信息中 利用API和注册表获取系统信息下 百叶窗图形特效 实现平面工具栏下 数据库查询结果的动态排序三 ...
VB基于API函数实现特殊菜单效果,实现水平展开的两级菜单或三级菜单,或者是带分隔条的菜单。程序调用GetSystemMetrics函数设定菜单高度,利用For循环添加菜单项。
在网上也看到了不少高手们的做法,但对于我这种不喜欢太复杂的人来说,我不是很喜欢那样写代码,GetSystemMetrics函数来得到各个边框的长度或宽度。。。。没几下,我的头就晕了,在查了许多资料以及实验后,我终于...
1. BYTE digitizerStatus = (BYTE) GetSystemMetrics(SM_DIGITIZER); 2. 3. if ((digitizerStatus & (0x80 + 0x40)) == 0) 4. //堆栈就绪+多触点 5. 6. { 7. 8. AfxMessageBox(L"No touch input is currently...
函数 Arc() Beep() BringWindowToTop() Chord() CloseHandle() CloseWindow() DeleteFileA() DeleteMenu() DestroyWindow() DllRegisterServer() Ellipse() ExitWindowsEx() FatalExit() FindWindowA() FreeLibrary...
CODE: // 结构内存用0初使化 - 注意: 一些Windows函数要求这么做,不过我记不得哪些需要,哪些不需要了:) <br> NOTIFYICONDATA niData; ZeroMemory(&niData,sizeof(NOTIFYICONDATA)); <br>// 得到...
有关如何编写可识别Win32 DPI的GUI应用程序的简单示例,该应用程序可在从Windows XP到最新的Windows 10的所有操作系统上正确缩放(在内部版本10.0.18980.1中进行了测试)。 简而言之 主监视器通常位于系统DPI上...
我们通常不必要知晓每一个函数和消息。但另一方面,也不得不记住其中的一部分,否则很难将VC++运用自如。到底该记住哪些,这在我们的课程中都会涉及到。 第二课: C++经典语法与应用,类的编写与应用,构造与析构...
.DLL命令 SystemParametersInfo不传址, 整数型, "User32.dll", "SystemParametersInfoA", , 允许获取和设置数量众多的windows系统参数 .参数 uAction, 整数型 .参数 uParam, 整数型 .参数 lpvParam, 整数型 .参数 ...
0102 使用DivMod函数返回两个操作数相除的商和余数 68 0103 使用Power函数返回底数的任何次幂 69 0104 使用Round函数将实数四舍五入为整数 69 0105 使用Sqr函数计算指定数的平方 70 0106 使用Mean函数计算...
0102 使用DivMod函数返回两个操作数相除的商和余数 68 0103 使用Power函数返回底数的任何次幂 69 0104 使用Round函数将实数四舍五入为整数 69 0105 使用Sqr函数计算指定数的平方 70 0106 使用Mean函数计算...
标记菜单、缺省菜单的实现原理、图形菜单的实现及常犯错误的分析,GetSystemMetrics的应用,快捷弹出菜单的实现方式及其命令响应函数有效范围(与弹出菜单时所指定的父窗口有密切的关系,最底层的子窗口具有最优先的...
标记菜单、缺省菜单的实现原理、图形菜单的实现及常犯错误的分析,GetSystemMetrics的应用,快捷弹出菜单的实现方式及其命令响应函数有效范围(与弹出菜单时所指定的父窗口有密切的关系,最底层的子窗口具有最优先的...