`
java-mans
  • 浏览: 11528885 次
文章分类
社区版块
存档分类
最新评论

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;//输出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;
}


结果如下:

分享到:
评论

相关推荐

    GetSystemMetrics_delphi_

    Delphi 巧用GetSystemMetrics函数,获取屏幕宽度。

    Delphi编程之“GetSystemMetrics”函数.rar_GetSystemMetrics

    该软件是Delphi关于API的一个使用! 有详细说明文档和程序实例!

    API之网络函数---整理网络函数及功能

    CreateScalableFontResource 为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统 DrawText 将文本描绘到指定的矩形中 DrawTextEx 与DrawText相似,只是加入了更多的功能 ...

    Windows常用API

    GetSystemMetrics是Windows中用于获取系统度量的API,它允许开发者获取系统的度量信息,例如获取屏幕的宽度和高度、获取鼠标的坐标等。 33. SetScrollRange SetScrollRange是Windows中用于设置滚动范围的API,它...

    通过python实现windows桌面截图代码实例

    这篇文章主要介绍了python实现windows桌面截图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... width=win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)

    Win32api设置窗口全屏的方法.docx

    Win32api 是 Windows 操作系统中的一个应用程序接口(API),它提供了大量的函数和结构体,用于开发 Windows 应用程序。其中,设置窗口全屏是一个常见的需求,本文将介绍使用 Win32api 设置窗口全屏的方法。 首先,...

    基于API函数实现特殊菜单效果,VB源代码.rar

    VB基于API函数实现特殊菜单效果,实现水平展开的两级菜单或三级菜单,或者是带分隔条的菜单。程序调用GetSystemMetrics函数设定菜单高度,利用For循环添加菜单项。

    vb编程经验手册.visual basic教程

    妙用GetSystemMetrics函数 利用API和注册表获取系统信息上 VB快速调用系统对话框下 利用API和注册表获取系统信息中 利用API和注册表获取系统信息下 百叶窗图形特效 实现平面工具栏下 数据库查询结果的动态排序三 ...

    计算机硬件信息PB获取计算机硬件信息.pdf

    通过使用GetWindowsDirectory函数和GetSystemDirectory函数,可以获取Windows目录和系统目录的路径。 计算机硬件信息PB获取计算机硬件信息.pdf文件提供了丰富的系统信息获取方法,帮助开发者更好地获取和使用系统...

    VB基于API函数实现特殊菜单效果

    VB基于API函数实现特殊菜单效果,实现水平展开的两级菜单或三级菜单,或者是带分隔条的菜单。程序调用GetSystemMetrics函数设定菜单高度,利用For循环添加菜单项。

    社区视频监控系统源代码分享.pdf

    3. 图形和绘制:代码中有许多与图形和绘制相关的函数和变量,例如 `LoadBitmap`、`CreateFont`、`DrawDialog` 等。这些函数用于加载位图、创建字体、绘制对话框等。 4. 系统度量:代码中使用了许多系统度量函数,...

    关于获取多个屏幕分辨率以及进行一些设置1

    EnumDisplayMonitors() 还会枚举出不可见的伪显示器,如果只是想得到实际的显示器数目的话,可以用 GetSystemMetrics(SM_CMONITORS) 函数,该函数不包括虚拟显示器。 在获取多个屏幕分辨率时,需要使用 ...

    vc窗口框架美化教程

    在网上也看到了不少高手们的做法,但对于我这种不喜欢太复杂的人来说,我不是很喜欢那样写代码,GetSystemMetrics函数来得到各个边框的长度或宽度。。。。没几下,我的头就晕了,在查了许多资料以及实验后,我终于...

    C++视区窗口触摸屏消息捕获

    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...

    Windows 60个常用API

    函数 Arc() Beep() BringWindowToTop() Chord() CloseHandle() CloseWindow() DeleteFileA() DeleteMenu() DestroyWindow() DllRegisterServer() Ellipse() ExitWindowsEx() FatalExit() FindWindowA() FreeLibrary...

    用Win32API Shell_NotifyIcon进行托盘图标编程-源代码

    CODE: // 结构内存用0初使化 - 注意: 一些Windows函数要求这么做,不过我记不得哪些需要,哪些不需要了:) &lt;br&gt; NOTIFYICONDATA niData; ZeroMemory(&niData,sizeof(NOTIFYICONDATA)); &lt;br&gt;// 得到...

    win32-dpi:在整个XP中正确DPI缩放Win32 Windows到最新Windows 10的示例

    有关如何编写可识别Win32 DPI的GUI应用程序的简单示例,该应用程序可在从Windows XP到最新的Windows 10的所有操作系统上正确缩放(在内部版本10.0.18980.1中进行了测试)。 简而言之 主监视器通常位于系统DPI上...

    VC学习大纲 VC学习讲义

    我们通常不必要知晓每一个函数和消息。但另一方面,也不得不记住其中的一部分,否则很难将VC++运用自如。到底该记住哪些,这在我们的课程中都会涉及到。 第二课: C++经典语法与应用,类的编写与应用,构造与析构...

    易语言-WIN32API功能150个(鼠标篇)

    .DLL命令 SystemParametersInfo不传址, 整数型, "User32.dll", "SystemParametersInfoA", , 允许获取和设置数量众多的windows系统参数 .参数 uAction, 整数型 .参数 uParam, 整数型 .参数 lpvParam, 整数型 .参数 ...

Global site tag (gtag.js) - Google Analytics