65.9K
CodeProject 正在变化。 阅读更多。
Home

Pretty WinAPI Class

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (35投票s)

2007年5月23日

4分钟阅读

viewsIcon

101368

downloadIcon

2768

新版本的库,不依赖 WTL/MFC

Screenshot - DevStudioSmall.jpg

Screenshot - OutlookDemoSmall.jpg

Screenshot - MDISmall.jpg

引言

当我开发 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)级别编译。

相关网页

有关更多信息,请参阅以下网页

历史

  • 2007 年 5 月 23 日 - 版本 0.1 发布
© . All rights reserved.