我的程序是基于对话框的。在程序中我动态创建了CListCtrl控件,并在CListCtrl中动态创建了CComboBox控件。在CComboBox类中发送了WM_NOTIFY消息(GetParent()->GetParent()->SendMessage(NOTIFY,GetParent()->GetDlgCtrlID(),(LPARAM)&lvDispinfo),但在对话框中的函数不相应。请问什么原因?

解决方案 »

  1.   

    加括号试试:
    (((GetParent())->GetParent())->SendMessage(NOTIFY,(GetParent())->GetDlgCtrlID(),(LPARAM)&lvDispinfo)
      

  2.   

    为什么要 ((GetParent())->GetParent())-> 这个结果是什么?不知道老兄的写法能不能运行!?
      

  3.   

    CWnd* GetParent( ) const;公共控件是当控件中发生事件(如用户输入)时,将通知消息发送到父窗口的子窗口。应用程序依赖于这些通知消息确定用户希望它采取的操作。大多数公共控件以 WM_NOTIFY 消息的形式发送通知消息。Windows 控件以 WM_COMMAND 消息的形式发送大部分通知消息。CWnd::OnNotify 是 WM_NOTIFY 消息的处理程序。与 CWnd::OnCommand 一样,OnNotify 的实现将通知消息调度到 OnCmdMsg 以在消息映射中进行处理。处理通知的消息映射项是 ON_NOTIFY。有关更多信息,请参阅技术说明 61:ON_NOTIFY 和 WM_NOTIFY 消息。另外,派生类还可以使用“消息反射”处理自己的通知消息。有关更多信息,请参阅技术说明 62:Windows 控件的消息反射参考这段说明
    我认为
     CListCtrl     CDialog         发往Dialog的Parent,NULL
    (GetParent()->GetParent()->SendMessage(NOTIFY,GetParent()->GetDlgCtrlID(),(LPARAM)&lvDispinfo),
    是不是去掉一个GetParent()
      

  4.   

    GetOwner()->SendMessage(WM_NOTIFY, GetDlgCtrlID(), (LPARAM)&lvDispinfo);
      

  5.   

    动态创建的对象,试试SetOwner(pParentWnd),或SetParent();然后在GetParent->SendMessage