Как получить имя класса документа в моей программе. Я имею в виду, я сделал это:
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
. Я не могу отнести к определенному классу документа из-за циклических зависимостей.
Я не уверен, что 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 и MFC .