CMFCPropertyGridCtrl在多个模块中使用,有一个严重的bug。第一个模块正常,第二个和以后的模块中,CMFCPropertyGridCtrl的成员变量CMFCPropertyGridToolTipCtrl不能正常创建窗口,在鼠标划过该控件的时候会弹出ASSERT失败的错误警告。
CMFCPropertyGridToolTipCtrl不能创建窗口是因为找不到窗口类。把第一个模块中的注册的窗口类地址导入给第二个模块,但是第二个模块在创建窗口的时候找不到该窗口类,导致创建窗口失败。
测试例子:
在exe对话框中创建一个CMFCPropertyGridCtrl,exe调用dll的一个子对话框,则dll对话框中的CMFCPropertyGridCtrl异常。
class CMFCPropertyGridCtrl : public CWnd
{
...
protected:
CToolTipCMFCPropertyGridToolTipCtrl m_IPToolTip; // Inplace tooltip control
...
}
void CMFCPropertyGridCtrl::Init()
{
...
m_IPToolTip.Create(this);//第二个模块中创建失败,找不到窗口类
//Warning: Window creation failed: GetLastError returns 0x0000057F
...
}