[VC++入门]步入VC++的殿堂

简介:
  有时候需要用VC++来做一个小软件,但是对于没用过的我,只能从新学习!曾今有人说过: “偷懒的人学VB,聪明的人学Delphi,真正的程序员学VC。”由曾学过VB也算是偷懒过了,但是中途放弃去学习C#了,现在觉得有时候要做一个小软件,而且又不是所有的计算机上都装有.NET的框架,为了一个几百K的程序还要将.NET框架打包,人家不懂程序的人一看还不得吓死。所以学习C++还是有必要的,何况想进入游戏行业的我呢?嗬嗬!其实能让我下决心去学这个还有一个就是我想了解一下Windows是怎么完成哪些操作的!

  我是第一次看C++的书,以前由于只喜欢做网站就全身心地去看ASP.NET(C#)了,这里只是一个笔记没有什么特别的,记录以下生活中的小事,也算是有第二门高级语言的开始,因为VB已经忘光了。大学学的C语言更别提了,呵呵,脚本应该不能算,开始吧,Fighting!

  在Windows程序中,窗口是用
窗口 句柄 HWND ) 来标示的,也就是说每一个窗口都有一个 窗口 句柄,而且唯一,这个应该和分配内存有关的;当然 我们要对某个窗口进行操作,首先就要得到这个窗口的句柄。句柄( HANDLE )是 Windows 程序中一个重要的概念,使用也非常频繁。在 Windows 程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时会为它们分配内存,并返回标识这些资源的标识号,即句柄。在后面的内容中我们还会看到图标句柄( HICON )、光标句柄( HCURSOR )和画刷句柄( HBRUSH )。

  消息:这个名词经常听到,但是我还没有真正认识和应用过这个都西!在C++中消息时有MSG结构表示:
 
 1  typedef  struct  tagMSG {      
 2 
 3              HWND   hwnd;     
 4 
 5              UINT   message;
 6 
 7              WPARAM wParam;
 8 
 9              LPARAM lParam;
10 
11              DWORD  time;
12 
13              POINT  pt;
14 
15  } MSG;

第一个成员变量hwnd表示消息所属的窗口。我们通常开发的程序都是窗口应用程序,一个消息一般都是与某个窗口相关联的。例如,在某个活动窗口中按下鼠标左键,产生的按键消息就是发给该窗口的。在Windows程序中,用HWND类型的变量来标识窗口。

第二个成员变量message指定了消息的标识符。在Windows中,消息是由一个数值来表示的,不同的消息对应不同的数值。但是由于数值不便于记忆,所以Windows将消息对应的数值定义为WM_XXX宏(WMWindow Message的缩写)的形式,XXX对应某种消息的英文拼写的大写形式。例如,鼠标左键按下消息是WM_LBUTTONDOWN,键盘按下消息是WM_KEYDOWN,字符消息是WM_CHAR,等等。在程序中我们通常都是以WM_XXX宏的形式来使用消息的。

第三、第四个成员变量wParamlParam,用于指定消息的附加信息。例如,当我们收到一个字符消息的时候,message成员变量的值就是WM_CHAR,但用户到底输入的是什么字符,那么就由wParamlParam来说明。wParamlParam表示的信息随消息的不同而不同。

最后两个变量分别表示消息投递到消息队列中的时间和鼠标的当前位置。

消息队列:有消息当然要排队,应为CPU执行程序又先后顺序的吧,不同的队列执行的次序也是不同的!但是也不是所有消息都要进去排队,Windows程序中的消息可以分为“进队消息”和“不进队消息”。进队的消息将由系统放入到应用程序的消息队列中,然后由应用程序取出并发送。不进队的消息在系统调用窗口过程时直接发送给窗口。不管是进队消息还是不进队消息,最终都由系统调用窗口过程函数对消息进行处理。

最后看一下,程序的入口函数作为我们这堂课的结束,因为要上班了!


 1  int  WINAPI WinMain(
 2 
 3      HINSTANCE hInstance,          //  handle to current instance
 4 
 5      HINSTANCE hPrevInstance,  //  handle to previous instance
 6 
 7      LPSTR lpCmdLine,               //  command line
 8 
 9       int  nCmdShow                   //  show state
10 
11  );

第一个参数hInstance表示该程序当前运行的实例的句柄,这是一个数值。当程序在Windows下运行时,它唯一标识运行中的实例(注意,只有运行中的程序实例,才有实例句柄)。一个应用程序可以运行多个实例,每运行一个实例,系统都会给该实例分配一个句柄值,并通过hInstance参数传递给WinMain函数。

第二个参数hPrevInstance表示当前实例的前一个实例的句柄。通过查看MSDN我们可以知道,在Win32环境下,这个参数总是NULL,即在Win32环境下,这个参数不再起作用。

    第三个参数 lpCmdLine 是一个以空终止的字符串,指定传递给应用程序的命令行参数。  

第四个参数nCmdShow指定程序的窗口应该如何显示,例如最大化、最小化、隐藏等。这个参数的值由该程序的调用者所指定,应用程序通常不需要去理会这个参数的值。

学习是要一个过程,但是我相信我有C#做我的靠山,对C++的学习是很有信心的,虽然不能一下子把它给啃了,慢慢努力!OK上班了,每天都去学学,在用用应该可以的哦!

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/01/23/cplusplus_start.html,如需转载请自行联系原作者

相关文章
|
20天前
|
存储 Java 编译器
C++基础入门详解(一)
C++基础入门详解(一)
|
1月前
|
存储 编译器 程序员
【C++入门到精通】C++入门 —— 内存管理(new函数的讲解)
一、C/C++内存分布 1. 栈(Stack) 2. 堆(Heap) 3. 全局区/静态区(Global Area/Static Area) 4. 常量区(Constant Area) 5.
72 0
|
1月前
|
存储 编译器 程序员
【C++入门到精通】C++入门 —— 类和对象(了解类和对象)
前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用 和 内联函数。也相信大家都掌握的不错,接下来博主将会带领大家继续学习有关C++比较重要的知识点——类和对象。
71 2
|
1月前
|
编译器 C语言 C++
【C++入门到精通】C++入门—缺省参数、函数重载
所谓缺省参数,顾名思义,就是在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,你就无须指定该参数。 缺省参数使用主要规则:调用时你只能从最后一个参数开始进行省略,换句话说,如果你要省略一个参数,你必须省略它后面所有的参数,即: 带缺省值的参数必须放在参数表的最后面。
57 0
|
1月前
|
存储 算法 C语言
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)
一、初始化列表 ⭕初始化列表概念 ⭕初始化列表的优点 ⭕使用场景 ⭕explicit关键字 二、Static成员 ⭕Static成员概念 🔴静态数据成员: 🔴静态函数成员: ⭕使用静态成员的
63 0
|
1天前
|
存储 前端开发 C++
【C++入门到精通】C++入门 —— deque(STL)
在C++中,deque(双端队列)是一种容器。deque是缩写形式,表示"double-ended queue",即双向队列。deque是C++标准库提供的一种方便、**高效的双向队列容器,提供了在两端进行插入和删除操作的能力,同时支持随机访问
9 0
|
5天前
|
存储 人工智能 编译器
C++:C++入门基础
C++:C++入门基础
|
10天前
|
存储 前端开发 C++
【C++入门到精通】C++入门 —— 容器适配器、stack和queue(STL)
在C++中​​std::stack​​​是一个模板类,它是基于容器的适配器,用于实现堆栈数据结构。堆栈是一种后进先出(LIFO)的数据结构,类似于现实生活中的一叠盘子。
16 4
|
20天前
|
存储 编译器 C语言
C++基础入门详解(二)
C++基础入门详解(二)
|
30天前
|
存储 算法 C语言
【C++入门到精通】C++入门 —— list (STL)
std::list是C++标准库中的双向链表容器。(这里有官方介绍链接) 它支持在任意位置进行快速插入和删除操作,并且在需要对元素进行频繁的插入和删除操作时,通常比std::vector更高效。std::list的元素不是在连续内存中存储,而是通过指针相互连接在一起。
47 1

相关产品

  • 云迁移中心