c++ 使用vs2010调用 win32api

以前读书时都是用vc6.0.后来学c#用vs。装系统只装了vs2010.今天用vs2010写c++程序。发现有点陌生。就总结下,免得以后忘记。


 

首先用vs2010选择c++语言。新建一个win32控制台程序。项目打开后会发现stdafx.h,targetver.h,stdafx.cpp还有自己的winAPITest1.cpp文件。

stdafx.h文件包含了stdio.h头文件。这个大家都明白。标准的c语言库。也就是说可以直接在_tmain函数里面直接调用printf函数。

tchar.h文件包含很多宏。#define _tmain      wmain。_tmain其实是wmain。


引用头文件

      1,引用头文件可以用<括号,也可以用“; <尖括号的方式包含的文件,预处理器通常会在特定的系统路径下搜索。”双引号则先在程序根目录寻找,找不到然后在系统目录找。

     不过最好系统的api用<,本地的使用”。因为这样vs会有提示。

     2,关于有些引用不带.h。例如 在vs 2010中用include<iostream.h>就不行,而用include<stdio.h>就可用.

     原因:

1、要区分标准C的库和标准C++的库。iostream是C++的库,stdio.h是标准C的库。

2、新的C++标准摒弃了.h形式的头文件,所以在vs2005里面是没有iostream.h的头文件的。

3、在早期的vs版本,比如VC6.0,用的还是老版本的C++标准库,例如iostream.h,并且当时标准库也没有引入名字空间。因此直接#include <iostream.h>是可以的。但到了vs2005,使用了新的C++标准库,只能用#include <iostream>。

4、名字空间里可以包含很多东西,比如函数名、标识符、数据类型等等。新的C++标准把标准库中的名字都放入了std名字空间,因此在#include <iostream>之后,还必须使用标准库的名字空间std,才能使用标准库里的类和函数,也就是必须 using namespace std;

5、对于C的标准库,例如,stdio.h,没有名字空间的概念,因此直接包含后即可使用。

6、新的C++标准库为了统一以前的C标准库,将原来c的标准库也放入了std名字空间,并把原来的C标准库去掉了.h后缀,前面加上字母“c”,例如stdio.h就变成了cstdio,使用时为#include <cstdio>,其内容和#include <stdio.h>相同,但是要额外使用名字空间std,也就是using namespace std;

7、因此,对于新的C++标准库,没有了.h形式的头文件,例如iostream,在包含了头文件以后,必须使用std名字空间才能使用库中的内容。对于C标准库,有两种使用方法,一种是用老的.h形式,例如stdio.h直接包含就可以了;另一种就是用C++的统一形式,例如cstdio,和C++标准库一样,包含了以后还要加上using namespace std;才能使用。

建议采用后面统一的形式,比如你要同时使用C和C++的库,可以这样写:
#include <cstdio>
#include <iostream>
using namespace std;

调用api

     

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{SYSTEM_INFO system_Info;GetSystemInfo(&system_Info);cout<<system_Info.dwPageSize<<endl;system("pause");return 0;
}

  

system("pause");

是从程序里调用“pause”命令;

而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Press any key to exit”的字,等待用户按一个键,然后返回。

 

 

转载于:https://www.cnblogs.com/Bonker/p/3152570.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java IO基准测试:Quasar与异步ForkJoinPool与ManagedBlock

“ Arien看到了我们运行的parallelStreams和ForkJoin基准测试的结果后&#xff0c;在Twitter上与我们联系。 这激起了他的兴趣&#xff0c;因此他进行了一些自己的测试&#xff0c;将Quasar纤维加入了混合物。 这是他的结果和结论。” –塔基皮&#xff08;Takipi&#xff09;A…

WP8开发札记(一)WP8应用生命周期管理

在介绍生命周期前&#xff0c;我们先了解两个相关的概念。 1、墓碑机制&#xff1a;WP8与Android采用的真后台机制不同&#xff0c;WP8采用的是墓碑机制。一旦从当前应用程序离开&#xff08;非退出&#xff09;&#xff0c;该应用会被墓碑化&#xff0c;这样可以更好的管理&am…

python类继承中构造方法_第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解...

第8.3节Python类的__init__方法深入剖析&#xff1a;构造方法与继承详解一、 引言上两节介绍了构造方法的语法及参数&#xff0c;说明了构造方法是Python的类创建实例后首先执行的方法&#xff0c;并说明如果类没有重写构造方法&#xff0c;Python将会给出默认的__init__方法…

OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序

由于此bug&#xff0c; Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本。 但是从Gradle 2.2开始&#xff0c;这不再是问题&#xff0c;因此使用自己动手做墨盒在OpenShift上运行最新的Gradle不再是问题。 DIY墨盒是一种实验性墨盒&#xff0c;它提供了一种在OpenS…

P2P编程(十)

此为网络编程的一个系列&#xff0c;后续会把内容补上。。。。 转载于:https://www.cnblogs.com/liangjie/p/3155866.html

python默认数据转换_Python_数据类型转换

数据类型转换int(x [,base ]) 将x转换为一个整数long(x [,base ]) 将x转换为一个长整数float(x ) 将x转换到一个浮点数complex(real [,imag ]) 创建一个复数str(x ) 将对象 x 转换为字符串repr(x ) 将对象 x 转换为表达式字符串eval(str ) 用来计算在字符串中的有效Python表达式…

Gradle入门:创建Web应用程序项目

这篇博客文章描述了如何使用Gradle创建一个Web应用程序项目。 更具体地说&#xff0c;我们想创建一个使用Java的Web应用程序项目&#xff0c;将我们的Web应用程序打包到WAR文件中&#xff0c;并在开发环境中运行我们的Web应用程序。 让我们找出如何满足这些要求。 补充阅读&…

js编码java解码_Js编码和Java后台解码

注&#xff1a;在使用get提交&#xff0c;url传递参数的时候&#xff0c;会带来中文乱码的问题&#xff0c;对此可以使用js编码来解决。Js编码的几种方式区别&#xff1a;1.window.escape()与HttpUtility.UrlEncodeUnicode()编码格式一样&#xff1a;将一个汉字编码为%uxxxx格式…

使用JAX-RS和Jetty创建Web服务和Rest Server

用Java创建WebService非常容易。 将其添加到ServletContainer并将其部署到嵌入式WebServer仅需要几行代码。 让我们创建一个具有两个函数的简单计算器&#xff0c;作为WebService的示例。 计算器将计算任何数量的squareRoot和平方。 它将返回一个简单的JSON响应&#xff0c;其…

java填充二维数组_Java用Arrays.fill()初始化二维数组的实现

在最短路径问题上遇到了一个问题&#xff0c;对于二维int数组 map[][],需要初始化为int的最大值&#xff0c;不想用双重循环赋初值&#xff0c;想用Arrays.fill()填充但是失败了。。。。。。首先说明&#xff0c;Arrays.fill()并不能提高赋值的效率&#xff0c;在函数的内部也是…

maya 中使用节点连接来求余数:

绑个东西要用到求余&#xff0c;不喜欢用表达式&#xff0c;就想用节点连出来&#xff0c;找了下网上只有 镀金铆钉 在火星时代上的教程&#xff0c;不过不能下载了&#xff0c;就自己想了下&#xff0c;终于搞出来了&#xff0c;做下笔记&#xff0c;不要忘了。 求余的思路&a…

Java8多线程ForkJoinPool:处理异常

引入Java8 lambda背后的主要动机之一是能够尽可能轻松地使用多核的能力&#xff08;请参阅精通Lambdas&#xff1a;多核世界中的Java编程 &#xff09;。 只需将代码从collection.stream()...更改为collection.parallelStream()...您就可以使用即时多线程&#xff0c;从而为您的…

java web 登录界面案例_【JavaWeb】74:写一个登录案例

今天是刘小爱自学Java的第74天。感谢你的观看&#xff0c;谢谢你。话不多说&#xff0c;开始今天的学习&#xff1a;Java又常被称之为后台开发。什么叫后台呢&#xff1f;除了后台还有什么前台、前端后端……这些概念一大堆&#xff0c;还容易弄混。以一个三层架构的知识点来引…

7种JIRA集成可优化Java开发流程

有哪些最佳集成可以用来优化JIRA工作流程&#xff1f; 我喜欢寻找在工作流程中提高效率的方法。 看着那些小的自动化和流畅的流程&#xff0c;使我的脸上露出笑容。 我知道我并不孤单&#xff0c;偶尔花更多的时间来获得一点点提升以使其正常工作&#xff0c;而不是最终节省了我…

hive处理日志,自定义inputformat

开放环境&#xff0c;hadoop-0.20.2&#xff0c;hive-0.6 1.日志分隔符 Xml代码 2010-05-31 10:50:17|||61.132.4.82|||http://www.360buy.com/product/201185.html 2010-05-31 10:50:17|||61.132.4.82|||http://www.360buy.com/product/201185.html分隔符是“ ||| ”&#xf…

java 封箱_java封箱和拆箱分析

学习java肯定会涉及到“封箱”和“拆箱”&#xff0c;那么什么是“封箱”和“拆箱呢&#xff1f;我相信有不少的老师或者作者都对此做过总结&#xff0c;在这里就不详细说了。总的来说就是&#xff1a;装箱就是自动将基本数据类型转换为包装器类型&#xff1b;拆箱就是自动将包…

EE JSP:使用自定义标签库生成动态内容

在Web应用程序中开发View层时&#xff0c;您希望尽量不要重复JSP文件中的内容。 JSP spec API允许您通过使用标记库来减少这种重复。 定制JSP标记是用户定义的xml标记元素&#xff0c;您可以将其插入JSP文件以替换为某些动态内容。 这是一个使用自定义JSP标记的简单jsp示例 &a…

prefuse学习(一)用非数据库连接和xml的方式读入数据

prefuse正常的数据源需要从ConnectionFactory中生产出来&#xff0c;但是如果平时不想用里面给的方法得到数据&#xff0c;就需要手动创造Graph里面所需要的内容两个Table 下面是我自己写的从文件中读入数据的工具类 package wjl.util;import java.io.FileInputStream; import …

java list作为参数传递_Java 程序将lambda表达式作为方法参数传递

Java 程序将lambda表达式作为方法参数传递在此示例中&#xff0c;我们将学习将lambda表达式作为Java中的方法参数传递。要理解此示例&#xff0c;您应该了解以下Java编程主题&#xff1a;示例1&#xff1a;将lambda表达式定义为方法参数示例import java.util.ArrayList;class M…

将ActiveMQ持久消息传递性能提高25倍

Apache ActiveMQ&#xff0c;JBoss A-MQ和Red Hat Apache ActiveMQ是一个非常受欢迎的开源消息传递代理&#xff0c;由创建&#xff08;和工作&#xff09; Apache Karaf &#xff0c; Apache Camel &#xff0c; Apache ServiceMix以及许多其他工具的人提供给您。 它拥有一个充…