none
在多个模块中使用CMFCPropertyGridCtrl的bug RRS feed

  • 常规讨论

  • 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

    ...

    }




    • 已编辑 cppcoding 2012年10月18日 0:34 笔误
    2012年10月18日 0:28