描述:
制作一个ACTIVEX OCX控件 ,此控件上需要动态创建一个msflexgrid控件用于其他操作
目前出现的问题是 此控件创建后 可以拿到VB 程序中使用,而在VC对话框下添加此控件 却出现错误
错误跟踪到:
_AFXWIN_INLINE CWnd* CWnd::GetParent() const
{ ASSERT(::IsWindow(m_hWnd)); return CWnd::FromHandle(::GetParent(m_hWnd)); }
初步判断是创建出现的问题,但具体怎么回事、如何来修改完全没思路
原代码如下:
void CMsflexgridVcToVbCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{ //设计时创建表格
/* if(! AmbientUserMode())
{}*/
if(m_pCtrlEditGrid ==NULL){
m_pCtrlEditGrid = new CCtrlEditGrid();
ASSERT_VALID(m_pCtrlEditGrid);
if(m_pCtrlEditGrid!=NULL)
{
m_pCtrlEditGrid->Create(NULL, WS_CHILD|WS_VISIBLE,CRect(0,0,150,360),this,IDS_MSFLEXGRID_MYSELF);
}
m_pCtrlEditGrid->InitGrid(m_initRow,m_initCol);
if ( m_pCtrlEditGrid != NULL )
m_pCtrlEditGrid->MoveWindow(0,0,rcBounds.Width(),rcBounds.Height());
}
在creat处出现的错误吧,目前不确定(因为这个程序生成的控件拿到VB 开发环境里可以使用,而在VC就不成,只是刚添加到对话框上就报错了,不懂怎样跟踪错误)
目前也没找到解决办法,或者说根本没思路,茫然。。!~~~~~~~~ 对这个问题不搭
希望各位牛兄 老大帮分析下 如果有解决办法 不胜感激
解决方案1:
Debug有问题可以查看一下出错的地方等,还有可能控件版本是Release,用在Debug中可能会出错,可能性很多..
解决方案2:注册了以后,看是否注册成功,其次,Release可以,一般发布软件都是用Release版本.. 解决方案3:
可以在初始化中先Create,然后OnDraw中再来操作控件...