设为首页 加入收藏

TOP

1.2.2 C++取代C
2014-05-12 09:44:17 来源: 作者: 【 】 浏览:137
Tags:1.2.2 取代

1.2.2  C++取代C

在Brian Kernighan和Dennis Ritchie发布第一版C (1978年)仅几年后,也就是1983年,Bjarne Stroustrup创建了一种新的语言,在C语言的基础上添加了面向对象的概念。这种语言就是C++,它很快也在Windows平台中流行起来。

C++允许将数据和功能封装在类中,同时还支持对象继承和多态性。通过这些功能,Windows的平面API可以表示为一组较小的实体,将数据结构和API操作组合成一个逻辑上下文。例如,与在UI上创建、显示和管理窗口相关的所有操作都可以归入一个称为Window的类。

C++方法可帮助开发人员更好地了解API,同时降低了Windows编程入门的门槛。例如,程序清单1-1中描述的“Hello, World”程序的基本组成部分可以围绕对象进行组织,如程序清单1-2所示。

程序清单1-2:采用C++语言的“Hello, World”程序蓝图(节选)
 

  1. // --- 表示主程序的类  
  2. class Main  
  3. {   
  4.  public:   
  5. static HINSTANCE hInstance;   
  6. static HINSTANCE hPrevInstance;   
  7. static int nCmdShow;   
  8. static int MessageLoop( void );  
  9. };  
  10.  
  11. // --- 表示窗口的类  
  12. class Window  
  13. {   
  14.  protected:   
  15. HWND hWnd;   
  16.  public:   
  17. HWND GetHandle( void ) { return hWnd; }   
  18. BOOL Show( int nCmdShow ) { return ShowWindow( hWnd, nCmdShow ); }   
  19. void Update( void ) { UpdateWindow( hWnd ); }   
  20. virtual LRESULT WndProc( UINT iMessage, WPARAM wParam, LPARAM lParam ) = 0;  
  21. };  
  22.  
  23. // --- 表示该程序的主窗口的类  
  24. class MainWindow : public Window  
  25. {   
  26. // --- 为简便起见省略了实现过程  
  27. }  
  28.  
  29. // --- 节选自Main类的实现  
  30. int Main::MessageLoop( void )  
  31. {   
  32. MSG msg;   
  33.  
  34. while( GetMessage( (LPMSG) &msg, NULL, 0, 0 ) )   
  35. {   
  36. TranslateMessage( &msg );   
  37. DispatchMessage( &msg );   
  38. }   
  39. return msg.wParam;  
  40. }  
  41.  
  42. LRESULT MainWindow::WndProc( UINT iMessage, WPARAM wParam, LPARAM lParam )  
  43. {   
  44. switch (iMessage)   
  45. {   
  46. case WM_CREATE:   
  47. break;   
  48. case WM_PAINT:   
  49. Paint();   
  50. break;   
  51. case WM_DESTROY:   
  52. PostQuitMessage( 0 );   
  53. break;   
  54. default:   
  55. return DefWindowProc( hWnd, iMessage, wParam, lParam );   
  56. }   
  57. return 0;  

通过C++提供的面向对象的方法,可以将对象行为打包到可重用的代码库中。程序员可以基于这些库创建程序,这样,他们只需定义与内置行为不同的那些行为。例如,他们需要重写程序清单1-2中的Paint()方法,以便重新绘制其窗口对象的UI。

采用了C++和对象库后,Windows编程发生了很大的变化。Microsoft创建了两个库,分别是Microsoft基础类(Microsoft Foundation Classes,MFC)和活动模板库(Active Template Library,ATL),在Microsoft的旗舰开发环境Visual Studio中仍维护并使用这两个库。

注意:接下来将介绍有关Visual Studio开发环境的详细信息。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇秘笈19 解析输入 下一篇所有编程皆为 Web 编程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)