探索丰富多彩的C 技术内幕手记
创始人
2024-06-20 09:41:48
0

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++的最佳(实践者)的方法。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...