如何在一个非MFC应用程序(如WIN32控制台编程)中使用MFC提供的类,例如CObject,要做哪些工作

 我来答
匿名用户
2013-05-11
展开全部

1.除了要包含必须的头文件,关键是要选择正确的MFC运行库链接方式:Project->Setting->General->"Use MFC in a Shared DLL"。

2.这是一个自定义对象两种持久化方式比较的测试例子:

#include <afxwin.h>           // MFC core and standard components
//#include <afxext.h> // MFC extensions
//#include <afxdisp.h> // MFC Automation classes
//#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
//#include <afxcmn.h> // MFC support for Windows Common Controls
class CMyClass : public CObject
{
DECLARE_SERIAL(CMyClass)
public:
CMyClass(){};
CMyClass(LPCTSTR lpszClassName){m_cString=lpszClassName;};
~CMyClass(){};
void Dump(CDumpContext& dc) const;
void Serialize(CArchive& ar);
CString m_cString;
};
IMPLEMENT_SERIAL(CMyClass,CObject,0)
void CMyClass::Dump(CDumpContext& dc) const
{
if(m_cString.GetLength() > 0)
{
dc << (LPTSTR)(LPCTSTR)m_cString;
dc << _T("\r\n");
}
}
void CMyClass::Serialize(CArchive& ar)
{
TCHAR* ptc=(LPTSTR)(LPCTSTR)m_cString;
for(int i=0; i<m_cString.GetLength();i++)
{
ar << ptc[i];
}
ar << '\r';
ar << '\n';
}
int main()
{
CMyClass* pobj = new CMyClass(_T("请把我持久化,谢谢!"));
CFile cfile1(_T("dump1.txt"),CFile::modeReadWrite|CFile::modeCreate);
CDumpContext cdc(&cfile1);
pobj->Dump(cdc);
CFile cfile2(_T("dump2.txt"),CFile::modeReadWrite|CFile::modeCreate);
CArchive ar(&cfile2,0);
pobj->Serialize(ar);
Sleep(2000);
return 0;
}
追问
这个我懂了,不过看你的代码还是有点问题:CObject的诊断功能应该在Dump函数前定义_DEBUG的吧;为什么你在serialize函数中没有判断ar的写入或是加载的状态,你这么写能不能正常使用;还有就是为什么我用的断言函数总是不起作用?
百度网友b0db494
2013-05-11 · TA获得超过257个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:163万
展开全部
包含相应的头文件试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式