Windows_Program_12_伤不起啊,能不能把书写正确

     今天继续windows的via C之旅,看的书是《精通Windows_API_函数_接口_编程实例》,里面提到了windows的数据类型。我摘录一到两段

书中的内容供大家鉴赏鉴赏。

1、数据类型的图

     有点伤不起啊,DWORD的类型的数据,在内存中占用的字节数居然可以达到32字节。不知道是图书的编辑人员弄错了,还是编书的人弄错了。果然很有钱,什么都是用

大的。

2、概念混淆的图

      我不知道为什么这么多的人,都把指针类型或者基类型为char的数组类型称为字符串变量。从我个人的学习经历来看,估计是受谭的书的影响。 明明是char的数组类型

非的叫字符串,还整出个字符串变量, 不知道是C也是面向对象的C++扩展 ? 真的很纳闷....

3、认知错误

         不知道为什么,会有这样的表述, 哎,我真的看不懂,很迷惑,一段话前后描述不一致至此,很无语。

4、不过这本书,还是有几个地方还是不错的。下面是这本书上的一个文件操作的例子。

/*

*

*This program used to get system information,and then save it.

*

*/



#include <windows.h>



#ifdef MAX_PATH

   #undef MAX_PATH

#endif



#define MAX_PATH 128



int main(int argc,char **argv)

{

	//Define File handle

	HANDLE hFile;

	DWORD dwWritten;



	//define a char array to save the system directory

	TCHAR szSysDirectory[MAX_PATH];



	//Get the system directory

	::GetSystemDirectory(szSysDirectory,MAX_PATH);



    //Creat a file systemroot.txt

	hFile=::CreateFile("systemroot.txt",   //file name you want to create

		              GENERIC_WRITE,       //file access mode

					  0,                   //

					  NULL,

					  CREATE_ALWAYS,

					  FILE_ATTRIBUTE_NORMAL,

					  NULL

					 );



	//WRITE FILE

	if(INVALID_HANDLE_VALUE != hFile)

	{

		if(!::WriteFile(hFile,szSysDirectory,lstrlen(szSysDirectory),&dwWritten,NULL))

			return GetLastError();

	}



	 



	//close file 

	::CloseHandle(hFile);



	return 0;

}

   原书上对Windows API的引用,没有使用全局作用域运算符 (::) 上面的是我加上的,加上这个是为了和CUI和GUI区分, 习惯上在CUI界面的程序上

引用API我会加上(::), 而在GUI的界面上的时候,则不使用。当然加与不加并不影响程序的执行,只是我个人的习惯而已。

5、书中提到的一个问题

    在书中提到了fopen函数和Windows API的关系,简要的论述了一下标准C函数库和Windows  API的关系, 一直以来我就有一个疑问,在Windows

上写程序的时候标准C库函数引用API呢? 还是API引用标准库函数呢?

   这里不做讨论,有兴趣的可以自己看看。

你可能感兴趣的:(windows)