如题,各位大虾,在view里面支持动态创建各种控件,专门作了一个函数C**View::AddCtrl(CRuntimeClass * , CRect)来支持往view里面添加控件
C**View::AddCtrl(CRuntimeClass * , CRect/*=CRect(0,0,0,0)*/)
{
CWnd* pWnd = NULL;
TRY
{
pWnd = (CWnd*)(pRuntimeClass->CreateObject());
if (pWnd == NULL)
{
AfxThrowMemoryException();
}
} }
然后在.h
CListCtrl Mylistctrl;
.cpp
C***View::OninitialUpdate()
{
.....
AddCtrl(RUNTIME_CLASS(Mylistctrl));
}
调试:F11跟踪pWnd = (CWnd*)(pRuntimeClass->CreateObject());发现没有创建成功,
CRuntimeClass:CreateObject()
{
if ( m_pfnCreateObject==NULL)//为空返回,难道CListCtrl没有缺省构造函数
{
ASSERT(_T("Trying to create object which is not DECLARE_DYNCREATE"));
return;
}
}
看MSDN上说明需要声明DECLARE_DYNCREATE()的类方可以,CListCtrl肯定是的阿
请问哪里理解错了?还望指教
C**View::AddCtrl(CRuntimeClass * , CRect/*=CRect(0,0,0,0)*/)
{
CWnd* pWnd = NULL;
TRY
{
pWnd = (CWnd*)(pRuntimeClass->CreateObject());
if (pWnd == NULL)
{
AfxThrowMemoryException();
}
} }
然后在.h
CListCtrl Mylistctrl;
.cpp
C***View::OninitialUpdate()
{
.....
AddCtrl(RUNTIME_CLASS(Mylistctrl));
}
调试:F11跟踪pWnd = (CWnd*)(pRuntimeClass->CreateObject());发现没有创建成功,
CRuntimeClass:CreateObject()
{
if ( m_pfnCreateObject==NULL)//为空返回,难道CListCtrl没有缺省构造函数
{
ASSERT(_T("Trying to create object which is not DECLARE_DYNCREATE"));
return;
}
}
看MSDN上说明需要声明DECLARE_DYNCREATE()的类方可以,CListCtrl肯定是的阿
请问哪里理解错了?还望指教
解决方案 »
- 请问如何看内存泄露文件的位置
- 动态DLL能导出普通函数,却不会导出class。已附简单代码,求教。
- 新浪网的论坛真差,发个帖子,再也找不到,什么鸡巴玩意儿
- 为何传送文件成功后文件打不开?
- 急! error lnk2001:unresolved external symbol"public: int _thiscall CDllClass::Load(char const *)"错误
- long型变量和CWnd*指针之间强制转换会不会出错。
- Windows XP下的硬盘读写
- getwindowlong失败。
- 硬件采集数据绘制BMP格式图像
- 有那几本关于软件架构方面的图书推荐啊?各位
- 怎么获得richeidt中光标的当前位置?
- 英业达这个公司到底怎么样啊??
C***View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
if (!MyListCtrl.Create(
WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL,
CRect(0,0,0,0), this, IDC_SHELL_LIST))
{
TRACE0("Unable to create list view control.\n");
return -1;
}
.....
}
最好不要用RUNTIME_CLASS
请问哪里理解错了?很可惜,CListCtrl声明的是DECLARE_DYNAMIC
请问哪里理解错了?很可惜,CListCtrl声明的是DECLARE_DYNAMIC
~~~~~~~~~~~~~~~~~~~~~~~
啊,ft,今天一看,才知道是DECLARE_DYNAMIC,以前总是理所当然的认为他继承自CWnd应该也可以支持动态生成,看来又理解错了,见笑了.....
顺便问一句,为什么CListCtrl不支持动态生成呢,另外大侠能否提供一个思路,可以完成一个封装比较好的函数来往view里面添加控件呢?谢谢了
如果用CListCtrl,直接用new CListCtrl,定义指针。