我定义了一个属性表类,并且添加了三个成员属性页。
m_IPSheet.AddPage(&m_pageiobserv);
m_IPSheet.AddPage(&m_pageiselect);
m_IPSheet.AddPage(&m_pageievidence);
我在第三个属性页上添加了一个进度条控件。然后用类向导工具给它添加了一个对应的CProgressCtrl类对象。但是当我打开这个属性表的时候,软件就崩溃了。查到的错误出在这个地方:
void CPropertySheet::AddPage(CPropertyPage* pPage)
{
    ASSERT_VALID(this);
    ASSERT(pPage != NULL);
    ASSERT_KINDOF(CPropertyPage, pPage);
进了这句就是下面的代码:
BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const
{
    ASSERT(this != NULL);
    // it better be in valid memory, at least for CObject size
    ASSERT(AfxIsValidAddress(this, sizeof(CObject)));    // simple SI case
    CRuntimeClass* pClassThis = GetRuntimeClass();我不知道这是什么问题,是不是属性页就不能加进度条?还是我自己有什么做错的地方。请高手指点。

解决方案 »

  1.   

    貌似是代码手误,传入的 pPage 并不是 CPropertyPage* 类型的对象。
      

  2.   

    当我加上了进度条控件,但是没有添加对应的CProgressCtrl类对象时就没有任何问题。不知道为什么?这应该不是代码手误的问题了。
      

  3.   

    m_pageiobserv、m_pageiselect、m_pageievidence这类对象是由CPropertyPage派生的类吗?
      

  4.   

    只好这么处理了,建立一个进度条对话框(无模式),把进度条和相应的对象加进去。然后在属性页需要加进度条的地方加一个STATIC控件,然后在处理的时候动态创建一个进度条对话框,并将其父母设为STATIC控件,这样就搞定了。