Получить имя класса документа

0

Как получить имя класса документа в моей программе. Я имею в виду, я сделал это:

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

Я хочу получить строку CMyDoc в другом проекте (DLL) моего решения MSVC с помощью класса CDocument. Я не могу отнести к определенному классу документа из-за циклических зависимостей.

Теги:
mfc

1 ответ

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.

  • 0
    Более надежной версией вызова TRACE будет: TRACE(_T("Document class = %s\n"), CA2CT(pClass->m_lpzsClassName)); Это не будет зависеть от настроек проекта и всегда будет давать правильный код. См. Документацию по макросам преобразования строк ATL и MFC .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню