Pretty WinAPI Class






4.90/5 (35投票s)
2007年5月23日
4分钟阅读

101368

2768
新版本的库,不依赖 WTL/MFC
引言
当我开发 GuiToolkit 时,很多人写信给我,要求我提供一个不依赖 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 bar、Splitter、List header subclass、Toolbutton extension、Worktab、Visual Studio Toolbox class。
- 易于迁移 GuiToolkit 类。
- 类似于 MFC 的编码风格;它不是伴侣。
- 支持真彩色工具栏和菜单。
- 工具栏组合框按钮。
它是免费的,所以请随意使用。不过,我希望你在开发中能给我一些署名。正如你所见,这项工作耗费了我大量时间,从零开始制作东西并不容易。想法总是受欢迎的。
不包含什么
我试图消除所有资源释放和内存错误,但正如所有软件都有其自身的错误一样,如果你发现其他错误,请告诉我。以下是一些已知问题和附加组件的列表,我希望在下一个版本中提供
- 不包含字符串管理类,如
CString
;请推荐一个或开发你自己的。 - 在 Windows 98 下不工作,因为挂钩和回溯问题似乎会导致 Windows 冻结。但是,我不会花时间在一个过时的操作系统上。
- 没有文档。我希望在我的 网站 上写一些关于该库的文章,但你可能更希望我把时间花在开发代码或附加组件上。
- 没有支持;抱歉。
- 停靠窗口的自动隐藏类已经设计并包含在内,但尚未开发。
- 窗口没有记忆(持久性);但是基本代码已经开发完成,需要完成。
- 简单的水平和垂直停靠在左、右和底部,但为什么不在顶部?好问题。
- 在发布模式下,只在“最小化大小”(/01)级别编译。
相关网页
有关更多信息,请参阅以下网页
- GuiToolkit 文章
- 我的 网站
历史
- 2007 年 5 月 23 日 - 版本 0.1 发布