日期:2014-05-17  浏览次数:20711 次

CSDN BLOG专家suffocater经验分享:Win98程序设计从入门到精通读书笔记
对CSDN   早有耳闻,今天终于把迈入了这个圈子。挺高兴,也算今后程序员生涯的起步吧。虽然还有那么一点迷惘,但学东西总是随时随地对我都具有很强的一致性的。

第二高兴的是,对VC迷惘已久找不到出路的问题,今天也算告一段落了。以前搞不懂的东西,今天我知道我应该到哪里搞懂了。《win98程序设计从入门到精通》,书写得很浅显,无疑对我这个新手会有莫大的帮助。工作到现在这一年半,一直很奇怪,VC的书也看了不少,语法也不能算不熟悉,为什么还是找不到VC的命门。原来症结在这里,对windows程序设计的原始代码了解不详尽。虽然以前也看过没有MFC的VC入门经典教程《Windows   Programming》,除了搞懂了消息循环、窗口处理函数以外,对后面的内容就没有涉及,也许这就是我理解和运用MFC最大的障碍。今天总算找到解决的路径了。也许这一步对其他人来讲是很容易的一步,但对我一个需要靠自学无师自通的人来讲真的算是一个值得庆祝的事。

比较了一下《Windows98程序设计入门到精通》和《Windows   Programming》(侯译简体台语版),后者似乎更难让我纵观全局,所以一直以来都缺乏对一个不使用MFC的windows程序整体的认知。而没有这样的整体认知要理解MFC肯定有很大的难度。仔细作了比对之后,我决定先通读前者,再琢磨后者,虽然后者被誉为“本书是地球上最有名、最受推崇、最多人使用的程式设计用书。”但我想,可能这句话是对熟悉了编程之后而言的吧。起码对我来讲是这样。

下面是今天学习的笔记。今天看到第五章,5.8小节。笔记只是对以前的内容作了一个温习和补充,第二章以后的东西对我来讲基本都是很新鲜,因此不用作笔记了,都是需要记的东西。

一、像学习一种新语言一样去学习win32编程

虽然熟悉C/C++语法,也可以用它编制一些控制台程序,但鉴于windows程序只有WinMain()函数没有main()函数,因而它与控制台下的C程序有不同,要掌握windows编程就必须习惯用windows编程的思考习惯,而不是传统的控制台C程序习惯。这样,才能读懂VC中的代码。那么首先把程序中主要的不同点记一下,比如数据类型。这些数据类型,也许,必须熟练掌握的程度正如控制台C程序中的int、char、float这些基本数据类型一样。控制台C程序中的数据类型,在win32编程下的作用应当是辅助理解,到熟悉新的数据类型之后便应该习惯尽量少的使用它们。

书中提到,“Windows   98程序并不广泛使用标准C/C++数据类型,如int和char型。相反,Windows   98所使用的所有数据类型已经在WINDOWS.H文件和/或其相关文件中被定义了。此文件被Microsoft(和生产Windows   98   C++编译程序的公司)公司所支持。而且必须包含在所有的Windows   98程序中。一些最常见的类型是HANDLE、HWND、UINT、BYTE、WORD、DWORD、LONG、BOOL、LPSTR和LPCSTR。”

这里对win32的基本数据类型作一个感性的解释:

HANDLE:用作句柄的32位整型数,句柄有许多类型值,但它们与HANDLE大小相同。简单的说,句柄是一个标识资源的值。所有的句柄都是以H开头。
HWND:窗口句柄。
UINT:unsigned   int的别名。
BYTE:8位无符号字符。
WORD:无符号短型数据。
DWORD:无符号长型数据。
LONG:long型数据的另外一个名字。
BOOL:整型值,此类用于表明该值为真或假。
LPSTR:指向字符串的指针。
LPCSTR:指向字符串的const指针。

结构体:
MSG:保存一条win32消息。
WNDCLASSEX:定义窗口类。

二、win32程序的结构再学习

WinMain()函数必须执行下列常见步骤:
1.   定义一个窗口类。
2.   用Windows   98注册该类。
3.   创建该类的窗口。
4.   显示窗口。
5.   开始运行消息循环。

一个最小的window98程序

//   A   minimal   Windows98   program

#include   <windows.h>

//声明窗口处理函数,这是本程序要用到的。一个普通的函数声明。
LRESULT   CALLBACK   WindowFunc(HWND,   UINT,   WPARAM,   LPARAM);

//窗口类的名字。在定义窗口时会用到。
char   szWinName[]= "My   Win ";   //name   of   window   class   窗口类的名字

int   WINAPI   WinMain   (
      HINSTANCE   hThisInst,
      HINSTANCE   hPreInst,
      LPSTR     lpszArgs,
      int     nWinMode  
      )//   WinMain   参数
   
{


  HWND   hwnd;
  MSG   msg;
  WNDCLASSEX   wcl;


------解决方案--------------------
沙發.
------解决方案--------------------
搞宣传的~!
------解决方案--------------------
只要是技术交流,鼓励大家在这里可以畅所欲言,此帖暂不移动:)
------解决方案--------------------
WIN版的程序员好象不多吧
------解决方案--------------------
只要是技术交流,鼓励大家在这里可以畅所欲言,此帖暂不移动:)
^_^