我用的是vc 2008。我新建了一个MFC activex control工程。然后在工程里添加了一个IDD_TEST的对话框,对话框上有一个CButton按钮。给该对话框声明了类CTestDialog。然后再CMyActiveXCtrl的头文件中声明了一个CTestDialog的对象。然后在
CMyActiveXCtrl的实现文件中添加了:
int CMyActiveXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
m_Test.Create(IDD_TEST,this);
         ShowWindow(SW_NORMAL);
return 0;
}
以及
void CMyActiveXCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
if (!pdc)   return;
m_Test.MoveWindow(rcBounds,TRUE);
}release下用容器测试通过。可是我在另一个工程的对话框上插入这个控件后,这个控件直接显示为白色,没有出现我的对话框。但编译的时候有。
请教。

解决方案 »

  1.   

    一般是路径问题吧,把生成的OCX拷贝到工程目录下试试呢,如果你是在debug下双击运行的就拷贝到debug下试试~
      

  2.   

    拷贝了,还是不行,显示的activex控件还是为白色!什么都没有!
      

  3.   

    你说的是在开发模式下不显示吗?那是正常的。当然也可以解决这个问题,只是比较麻烦,一时说不太清楚。大概的处理方法是要在OnSetExtend方法里面处理(名字可能有拼写错误)。
      

  4.   

    你把对话框放在OnDraw里创建.这样不会分设计模式和运行模式.