有个坏消息,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;
}
结果如下:
![](http://my.csdn.net/uploads/201207/30/1343638582_2804.jpg)
分享到:
相关推荐
Delphi 巧用GetSystemMetrics函数,获取屏幕宽度。
该软件是Delphi关于API的一个使用! 有详细说明文档和程序实例!
CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 DrawText 将文本描绘到指定的矩形中 DrawTextEx 与DrawText相似,只是加入了更多的功能 ...
GetSystemMetrics是Windows中用于获取系统度量的API,它允许开发者获取系统的度量信息,例如获取屏幕的宽度和高度、获取鼠标的坐标等。 33. SetScrollRange SetScrollRange是Windows中用于设置滚动范围的API,它...
这篇文章主要介绍了python实现windows桌面截图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... width=win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
Win32api 是 Windows 操作系统中的一个应用程序接口(API),它提供了大量的函数和结构体,用于开发 Windows 应用程序。其中,设置窗口全屏是一个常见的需求,本文将介绍使用 Win32api 设置窗口全屏的方法。 首先,...
VB基于API函数实现特殊菜单效果,实现水平展开的两级菜单或三级菜单,或者是带分隔条的菜单。程序调用GetSystemMetrics函数设定菜单高度,利用For循环添加菜单项。
妙用GetSystemMetrics函数 利用API和注册表获取系统信息上 VB快速调用系统对话框下 利用API和注册表获取系统信息中 利用API和注册表获取系统信息下 百叶窗图形特效 实现平面工具栏下 数据库查询结果的动态排序三 ...
通过使用GetWindowsDirectory函数和GetSystemDirectory函数,可以获取Windows目录和系统目录的路径。 计算机硬件信息PB获取计算机硬件信息.pdf文件提供了丰富的系统信息获取方法,帮助开发者更好地获取和使用系统...
VB基于API函数实现特殊菜单效果,实现水平展开的两级菜单或三级菜单,或者是带分隔条的菜单。程序调用GetSystemMetrics函数设定菜单高度,利用For循环添加菜单项。
3. 图形和绘制:代码中有许多与图形和绘制相关的函数和变量,例如 `LoadBitmap`、`CreateFont`、`DrawDialog` 等。这些函数用于加载位图、创建字体、绘制对话框等。 4. 系统度量:代码中使用了许多系统度量函数,...
EnumDisplayMonitors() 还会枚举出不可见的伪显示器,如果只是想得到实际的显示器数目的话,可以用 GetSystemMetrics(SM_CMONITORS) 函数,该函数不包括虚拟显示器。 在获取多个屏幕分辨率时,需要使用 ...
在网上也看到了不少高手们的做法,但对于我这种不喜欢太复杂的人来说,我不是很喜欢那样写代码,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, 整数型 .参数 ...