探索一个不依赖WTL/MFC的库

编程的世界里,封装消息处理是构建用户界面时不可或缺的部分。本文将介绍一个不依赖WTL/MFC的库,它旨在简化Windows API的使用,并提供一个易于理解的封装方式。

初识库的构想

最初,认为创建一个不依赖WTL/MFC的的想法是荒谬的。但在编写了一些代码之后,发现这个想法非常有趣。就像看到的,甚至不记得写了多少代码。这个库并不是MFC、MTL等的替代品。将其视为替代品是荒谬的。它只是一个可能帮助理解封装的好奇心。尽量让代码简单到任何人都能理解。尽管如此,不能保证代码写得好。像往常一样,它可能是一个糟糕或好的编程示例。

期望与反馈

首先,要感谢花时间检查代码或尝试一些示例。如果对项目感兴趣,可以给发新的类或代码更正。这一次,除了在CodeProject上发布的一个数组控件类之外,整个代码都是责任。这给了回复消息的机会。

概述

在开发过程中,没有使用正式的架构。只需要考虑一个基础方案,然后围绕它创建类。正如在查看代码时看到的,对MFC有很大的依赖。这就是为什么一些类有相似的名字。设计了一个类似的方案,至少在外观上是基于宏的。

CWin是基础库类。它的功能是围绕Windows API基础和WndProc函数。CWin继承了CMsg消息结构;参见文件CMacrodefine.h。它包含一个NewMsgProc虚拟函数,稍后由调用消息处理函数的宏替换。库按逻辑组织成一组基类。这些类围绕Windows基本控件和其他高级组件的扩展,名称为swcext。不幸的是,不能做详细的描述,所以将提供一个快速参考到基础文件:

  • CApp.h: 类应用程序包装器,其功能是启动代码执行。
  • CCommonCtrl.h: 公共Windows控件包装器,工具箱和状态栏装饰。
  • CDialogControl.h: 公共对话框包装器和基础对话框类。
  • CFrame.h: 基础框架包装器,用于管理SDI和MDI窗口,停靠栏和钩子菜单类。
  • CGdi.h: GDI函数包装器和窗口装饰类。
  • CMenuSpawn.h: 菜单扩展包装器,支持图标和现代外观。

库特性

以下是这个的一些主要特性:

  • Visual Studio 2005风格的现代外观。
  • 装饰性菜单包含在管理MDI和SDI的基础类中。
  • 所有公共控件都进行了子类化,以允许轻松的消息操作。
  • LINK_Control函数允许轻松的消息操作,文本框消息操作等。
  • 不需要额外的DLL。
  • 小型可执行文件。
  • 主框架中包含停靠栏。
  • 可分离的停靠标签。
  • MDI标签。
  • 标签可以在另一个窗口中移动和停靠。
  • 高级扩展,如Comboboxext、Outlook栏、分隔符、列表头子类、Toolbutton扩展、Worktab、Visual Studio工具箱类。
  • GuiToolkit类的轻松迁移。
  • 类似MFC的编码风格;它不是伴侣。
  • 带有真彩色支持的工具栏和菜单。
  • 工具栏组合框按钮。

它是免费的,所以可以随意使用。不过,如果在开发中使用了它,希望能给一些认可。正如看到的,这是一个耗费了很多时间的工作,从零开始制作一些东西并不容易。欢迎提出建议。

不包含的内容

试图消除所有的资源释放和内存错误,但就像所有软件都自带错误一样,请告诉如果发现了其他的。以下是一些已知问题和希望在下一个版本中可用的附加组件的列表:

  • 它不包括像CString这样的字符串管理类;请建议一个或开发自己的。
  • 它在Windows 98下不起作用,因为钩子和回叫问题导致Windows冻结。然而,不会花时间在一个已经死亡的操作系统上。
  • 没有文档。希望在网站上写一些关于的文章,但可能更希望把时间花在开发代码或附加组件上。
  • 没有支持;很抱歉。
  • 停靠窗口的自动隐藏类已经设计并包含在内,但尚未开发。
  • 窗口没有内存(持久性);尽管基础代码已经开发,需要完成。
  • 简单的水平和垂直停靠在左、右和底部,但为什么不在顶部呢?好问题。
  • 在发布模式下,仅以最小化大小(/01)编译。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485