在dll中输出一个函数,定义如下:
CPropertyPage* GetPropertyPage()
{
::AFX_MANAGE_STATE(AfxGetStaticModuleState())
CTestPage *pTestpage=new CTestPage();  
            //CTestPage 从CPropertyPage派生 return (CPropertyPage*)pTestpage;
}在EXE中使用:
typedef CPropertyPage* (*GetPage)(CPropertySheet *); hInst=LoadLibrary("PageInDll.dll");
if (hInst==NULL)
return false;
GetSheet pGetPage=(GetPage)GetProcAddress(hInst,"GetPropertyPage"); if (pSetSheet==NULL)
{
FreeLibrary(hInst);
return false;
} CPropertyPage* pPage=pGetPage((CPropertySheet*)&sht);
         
         CPropertySheet sht; sht.AddPage(pPage);           sht.DoMal();          return false;
////////
//断言错误:
#ifdef _DEBUG
CObject* AFX_CDECL AfxStaticDownCast(CRuntimeClass* pClass, CObject* pObject)
{
ASSERT(pObject == NULL || pObject->IsKindOf(pClass));  //报错
return pObject;
}
#endif//在CPropertySheet的代码处
CPropertyPage* CPropertySheet::GetActivePage() const
{
ASSERT_VALID(this); CPropertyPage* pPage;
if (m_hWnd != NULL)
pPage = STATIC_DOWNCAST(CPropertyPage,
CWnd::FromHandle((HWND)::SendMessage(m_hWnd, PSM_GETCURRENTPAGEHWND, 0, 0)));//这里报错!!!
else
pPage = GetPage(GetActiveIndex());
return pPage;
}
诸位,如何解决?