【问题标题】:Get Document Class Name获取文档类名
【发布时间】:2023-04-03 19:36:01
【问题描述】:

如何在我的程序中获取文档的类名。我的意思是,我已经这样做了:

pDocTemplate = new CMultiDocTemplate(
   IDR_FRAMETYPE,
   RUNTIME_CLASS(CFrameDoc2D),
   RUNTIME_CLASS(CEditorChildFrame),
   RUNTIME_CLASS(CFrameView));
gl_pDocTemplateManager->AddTemplateInfo("CMyDoc", eStructure);
AddDocTemplate(pDocTemplate);

我想通过 CDocument 类在我的 MSVC 解决方案的另一个项目 (.dll) 中获取 CMyDoc 字符串。由于循环依赖,我无法转换为特定的文档类。

【问题讨论】:

    标签: c++ mfc document-view


    【解决方案1】:

    我不确定AddTemplateInfo() 是做什么的,它似乎不是标准的 MFC 功能。

    要获取类的名称,您可以使用以下内容:

    CRuntimeClass *pClass = pDoc->GetRuntimeClass();
    if (pClass != NULL)
        TRACE(_T("Document class = %S\n"), pClass->m_lpszClassName);
    

    注意:m_lpszClassName 是 ASCII (LPCSTR),上面的代码假定您的项目基于 Unicode——否则,请将 %S 更改为 %s

    【讨论】:

    • TRACE 调用的更可靠版本是:TRACE(_T("Document class = %s\n"), CA2CT(pClass->m_lpzsClassName)); 这将不依赖于项目设置,并且始终会生成正确的代码。有关文档,请参阅 ATL and MFC String Conversion Macros
    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 2019-04-24
    • 2018-04-10
    • 1970-01-01
    • 2018-09-03
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多