Visual Studio .NET 2002Visual C++ 7.1Visual Studio 6Visual C++ 7.0Visual Studio .NET 2003Windows 2000Visual C++ 6.0Windows XPMFC中级开发Visual StudioWindowsC++
如何从 HTML 资源中提取文本






4.69/5 (26投票s)
2005年6月10日
2分钟阅读

78937

1612
本文说明了如何从 HTML 资源中提取文本。
引言
本文将引导初学者了解将 HTML 资源添加到他们的项目并通过代码访问该资源的过程。我在这里提供一个简单的函数,它将用 HTML 资源的全部内容填充一个 CString
。
背景
几天前,我正在编写一个生成 HTML 报告的应用程序,并希望将报告的模板添加到我的代码中。我不想硬编码任何 HTML,也不想引用外部文件作为模板。因此,我决定通过将 HTML 模板作为资源添加到我的项目中来解决这个难题。结果,我能够加载资源并获得它的 HANDLE
,但无法弄清楚如何将内容放入 CString
中。我的根本问题是我没有意识到 HANDLE
实际上是指向我加载的 HTML 的裸指针。
这个看似简单的任务让我绞尽脑汁近一个小时,直到在 VC++ 论坛上得到了帮助。然后我决定把这些东西整理起来,作为任何可能遇到此问题的人的参考。
将 HTML 资源添加到您的项目中
创建项目后,您可以右键单击资源选项卡中找到的项目,然后选择“添加资源”,如以下所示
然后系统将提示您选择资源类型。选择 HTML,您可以选择创建一个新的或导入一个现有文件。
将 HTML 添加到您的项目中后,您就可以通过您的程序访问它了。
GetHTML() 函数
static bool GetHTML(const int& idrHTML, CString& rString) { bool retVal = false; try { HRSRC hSrc = FindResource(NULL, MAKEINTRESOURCE(idrHTML), RT_HTML); if (hSrc != NULL) { HGLOBAL hHeader = LoadResource(NULL, hSrc); if (hHeader != NULL) { LPCTSTR lpcHtml = static_cast<LPCTSTR>(LockResource(hHeader)); if (lpcHtml != NULL) { rString = CString(lpcHtml); retVal = true; } UnlockResource(hHeader); } FreeResource(hHeader); } } catch (CMemoryException* e) { SetLastError(ERROR_FUNCTION_FAILED); e->ReportError(); e->Delete(); retVal = false; } catch (CResourceException* e) { SetLastError(ERROR_FUNCTION_FAILED); e->ReportError(); e->Delete(); retVal = false; } catch (CException* e) { SetLastError(ERROR_FUNCTION_FAILED); e->ReportError(); e->Delete(); retVal = false; } catch (...) { SetLastError(ERROR_FUNCTION_FAILED); retVal = false; } return retVal; }
好吧,这就是全部内容。
结论
我知道,所有这些对许多经验丰富的开发人员来说可能都显得理所当然,但有时显而易见的事情却并不那么明显。希望这个小片段能帮助您完成项目。
历史
- 2005年7月10日
初始发布。