探索丰富多彩的C++技术内幕手记

开发 后端
C++技术有很多值得学习的地方,这里我们主要介绍C++技术,在向大家详细介绍C++技术之前,首先让大家了解下C++,什么是C++技术?

C++语言是主要使用的编程语言,但是C++凭借其对C的兼容性,面向对象性质也开始在该领域崭露头角,在系统级的开发上,C++技术应用居多。这3种语言各有特色。总的来说,C++的应用集中在如下主要领域。

一、应用程序框架

在CmyApp类中定义了一个虚函数:Virtual BOOL InitIstance();用来初始化应用程序。在这里可以初始化应用程序框架。在CMyApp类中有一个数据成员m_pMainWnd这是主框架窗口的指针。在需要时可以用AfxGetApp()->m_pMainWnd来获得。其中AfxGetApp()是获得应用程序的指针。

初始化应用程序:

  1. m_pMainWnd=new CmyFrame();  
  2. m_pMainWnd->ShowWindow(m_nCmdShow);     
  3. m-pMainWnd->UpdateWindow(); 

如果更新区域不为空,UpdateWindow成员函数直接发送消息WM_PAINT 越过应用程序队列,如果更新区域为空,则不会发送WM_PAINT消息。 这个函数设置窗口的可视状态。每个应用程序只应用CwinApp::m_nCmdShow为主窗口调用一次ShowWindow.以后调用ShowWindow应该用下面列出的值来替代CWinApp::m_mCmdShow指定的值。

  1. CWnd::ShowWindow  
  2. 函数原型:BOOL  ShowWindow(int m_nCmdShow)  
  3. 返回值:窗口可见为:非零值;  
  4. 窗口不可见为:零;  
  5. m_nCmdShow可以指定的值有:  
  6. SW_HIDE 隐藏窗口并将活动状态传递给其它窗口。  
  7. SW_MINIMIZE最小化窗口并激活系统列表中的顶层窗口。  
  8. SW_RESTORE 激活并显示窗口。如果窗口是最小化或最大化的,Windows恢复其原来的大小和位置。   
  9. SW_SHOW 激活窗口并以其当前的大小和位置显示。  
  10. SW_SHOWMAXIMIZED 激活窗口并显示为最大化窗口。  
  11. SW_SHOWMINIMIZED 激活窗口并显示为图标。   
  12. SW_SHOWMINNOACTIVE 将窗口显示为图标。当前活动的  
  13. 窗口将保持活动状态。  
  14. SW_SHOWNA 按照当前状态显示窗口。当前活动的窗口将保持活动状态。  
  15. SW_SHOWNOACTIVATE 按窗口最近的大小和位置显示。当前活动的窗口将保持活动状态。   
  16. SW_SHOWNORMAL 激活并显示窗口。如果窗口是最小化或最大化的,则Windows恢复它原来的大小和位置。 

CmyFrame类 类CmyFrame的对象代表着应用程序的主框架窗口。当构造函数调用基类CframeWnd的Create成员函数时,Windows将创建具体的的窗口结构,同时应用程序框架会将所创建的窗口结构连接到C++对象中。为了显示所创建的窗口,必须调用基类中的ShowWindow和UpdateWindow成员函数。CmyFrame::Onpaint函数 应用程序框架在每次需要重新绘制窗口时,都要调用这个非常重要的且已经被映射过的CmyFrame类的成员函数。

在程序运行时,在用户改变了窗口的大小时,在窗口的全部或部分被重新显现时,OnPaint成员函数都会被调用。CpaintDC和图形设备接口(GDI)有关,MFC库应用程序框架并没有采用虚函数来处理Window消息,相反,它通过一些宏来将特定的消息映射到派生类中相应的成员函数上。MFC消息控件函数要求我们提供函数原型、函数体以及在消息映射中的。#t#

同样的原因,在写了“你应当如何学习C++技术一文之后,当孟岩先生邀请我给《程序员》写一个系列的文章,介绍一下我在接触C++的过程中的态度和认识转变时,我虽然非常高兴的答应了,但直到现在3个月过去了还是颗粒无收。为什么?因为我觉得真正本质的问题没有被清晰的触摸到;所以直到现在我都没有动笔,免得废话说了一大堆,除了能被当成小说读读之外,对真正考虑是否要学习乃至使用C++的人未必有什么实际用处。

然而,这么个念头一直都放在潜意识里面。前一阵子和Bjarne通信,谈到了关于C++技术的一些想法,在邮件里面总结了一下C++的复杂性来源,感觉思路清晰了许多。而这篇文章要达到的目的,正是传达对C++的复杂性的一个具体而明确的认识,有了这个认识作为支持,我们便可以推导出学习C++的最佳(实践者)的方法。

责任编辑:chenqingxiang 来源: 博客园
相关推荐

2010-01-27 10:29:39

C++代码解析

2010-01-13 18:30:18

CC++程序设计

2010-01-14 15:15:39

C++Test

2010-01-06 16:02:53

2010-02-03 18:06:42

Python语言

2010-02-05 16:28:07

Android

2010-02-22 18:25:07

2009-12-31 14:56:36

ADO.NET Ent

2009-12-17 14:45:37

Visual Stud

2010-02-26 17:54:54

python

2010-03-03 16:08:20

Android手机系统

2010-02-06 16:02:57

Android 应用程

2010-02-03 15:58:53

Python应用程序

2009-12-22 17:00:58

ADOMD.NET对象

2010-03-19 14:12:06

太网交换机

2009-12-18 15:49:12

ADO.NET组件

2010-01-08 10:41:56

JSON 数据

2009-09-10 08:40:52

Windows 7新功能

2010-02-04 14:27:11

2009-12-09 10:34:10

嵌入式Linux操作系
点赞
收藏

51CTO技术栈公众号