WEB开发网
开发学院软件开发VC 对话框模板 RegexTest 阅读

对话框模板 RegexTest

 2006-07-19 11:31:19 来源:WEB开发网   
核心提示: 当然,话虽如此,对话框模板 RegexTest(6),CStringDialog 检查图标资源 ID,看看值是否大于 IDI_APPLICATION,随着 .NET 框架越来越普及,其性能也会得到不断的改进,也就是第一个系统图标的 ID,如果该图标 ID 在系统 ID 范围之内

当然,话虽如此,CStringDialog 检查图标资源 ID,看看值是否大于 IDI_APPLICATION,也就是第一个系统图标的 ID。如果该图标 ID 在系统 ID 范围之内,CStringDialog 通过调用 ::LoadIcon 来加载它,此时 hInstance 置为 NULL(用于系统图标)并在 数据成员 m_hIcon 中保存加载的 HICON。然后 CStringDialog用 0xFFFF + nResID 格式(nResID=0)来构造对话框模板。这导致 Windows 创建一个静态图标,但并非实际的图标,然后,CStringDialog 在 OnInitDialog 中才设置实际图标:

// in CStringDialog::OnInitDialog()
if (m_hIcon) {
  CStatic* pStatic = (CStatic*)GetDlgItem(IDICON);
  pStatic->SetIcon(m_hIcon);
}

这样一来,你可以将任何 IDI_XXX 形式的图标 IDs 传递给 CStringDialog::Init。你还能用自己的图标,只要其 ID 小于 IDI_APPLICATION = 32512。具体细节请参考源代码。

我最近要写一个正则表达式的 DDV 确认程序,正巧你写了一个(参见 2005 四月刊)。想知道为什么你要包装 .NET 库,这样无端地添加了许多依赖性(包装库累赘),为什么不用 Visual Studio .NET 里现成而简洁的正则表达式库,你只要包含一个头文件便可以在你的 MFC 程序中使用它,atlrx.h?虽然它不是百分百标准的语法,但我宁愿用它而不愿添加对 .NET 框架的依赖。

Gil Rosin

将我一军还要朝我拍砖!我甚至都不知道 ATL 有一个 regex 类。Windows 的东西太多,即使你是一个高手,也不一定就知道的那么全。没错,你说得很对,ATL 确实提供了一个 regex 实现!

首先,让我来更正一下人们关于 .NET 框架的一些印象。我知道很多人在应用程序中添加这样的依赖性时都非常勉强,因为害怕代码臃肿,我刚开始也是这样。但是使用 .NET 框架也许并不像你想像的那么糟。虽然托管应用在启动时明显感觉性能问题,但不管你信不信,一旦框架被加载之后,微软中间语言(MSIL)代码甚至可以运行得比本机 EXEs 还快。那是因为 JIT (即时)编译器真的能进行许多性能优化。虽然一些面向老版本 Windows 如 Windows 98 或 Windows NT 的应用不一定有现成的框架环境,你得自己安装(参见“Using Visual Studio .NET 2003 to Redistribute the .NET Framework”或在 google 上搜索“dotnetfx.exe”),但较新的以及未来的 Windows 版本都会将预装框架环境。随着 .NET 框架越来越普及,其性能也会得到不断的改进,调用框架所产生的额外成本(性能和安装方面)将会降至最小。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:对话框 模板 RegexTest

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接