首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

windows32基础跟GetSystemMetrics函数

2012-09-13 
windows32基础和GetSystemMetrics函数有个坏消息,windows程序中不能使用printf函数好消息是,仍然可以使用s

windows32基础和GetSystemMetrics函数

有个坏消息,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;//输出12system("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;}


结果如下:

windows32基础跟GetSystemMetrics函数

热点排行