一个基于Win32的完全面向对象的窗口类

  记得以前看过一本书,叫做《windows图形编程》,作者是Yuan Feng,机械工业出版社出版的,该书从Win32API开始介绍,讲述了Win32 GDI和DirectDraw API的技术细节,里面好多技术都研究得特别深入。最让我难忘的是它基本上用Win32API完成了一套类似于MFC的图形框架,不过与MFC不同的是,MFC里面消息映射机制还不算是完全的面向对象的,而它则完全用面向对象的技术方法实现了图形库。

  最近上网查资料,偶然发现他最基础的那个窗口基类居然能在网上找到代码。真是喜出往外了。

  看看他的用面向对象技术封装的KWindow类吧。呵呵,我就喜欢在类名前加个大写字母K了,真是与我爱好一样啊。

  头文件KWindow.h:

  1. #if _MSC_VER > 1000
  2. #pragma once
  3. #endif // _MSC_VER > 1000
  4. // 以K开头来命名类,是希望与MFC有明显区别
  5. class KWindow
  6. {
  7. protected:
  8.     // 处理WM_PAINT消息,由WndProc调用
  9.     virtual void OnDraw(HDC hDC)
  10.     {
  11.     }
  12.     // 处理WM_KEYDOWN消息,由WndProc调用
  13.     virtual void OnKeyDown(WPARAM wParam, LPARAM lParam)
  14.     {
  15.     }
  16.     // 真正的消息分发/处理函数
  17.     virtual LRESULT WndProc(HWND hWnd, UINT uMsg,
  18.         WPARAM wParam, LPARAM lParam);
  19.     // API中注册的消息处理函数,不能是成员函数,因为成员函数有this指针
  20.     static LRESULT CALLBACK WindowProc(HWND hWnd,
  21.         UINT uMsg, WPARAM wParam, LPARAM lParam);
  22.     // 派生类可以在这里修改窗口的属性,如图标、菜单等
  23.     virtual void GetWndClassEx(WNDCLASSEX & wc);
  24. public:
  25.     // 保存该窗口对应的HWND
  26.     HWND  m_hWnd;
  27.     // m_hWnd 由CreateEx成员函数调用API函数CreateWindowEx赋值
  28.     KWindow(void)
  29.     {
  30.         m_hWnd = NULL;
  31.     }
  32.     // destructor
  33.     virtual ~KWindow(void)
  34.     {
  35.     }
  36.     // 调用API函数CreateWindowEx创建窗口
  37.     
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值