父窗口为a,然后我用CreateWindowEx新建了一个子窗口b,我在b上操作得到的值,怎样才能传给a中的listbox,还请各位指点。

解决方案 »

  1.   

    你可以在b中通过GetParent得到父窗口a,这样就可以操作a中的CListBox控件了,发送消息,调用自定义的函数或者直接操作a中的CListBox public成员变量
      

  2.   

    GetParent中有个参数hwnd,请问这个参数如何得到?
      

  3.   

    自定义一个消息NMHDR nmhdr;
    ...
    GetParent()->SendMessage(WM_NOTIFY, 0, &nmhdr);将这个问题交给父窗口进行处理。
      

  4.   

    HWND hWnd3 = ::FindWindow(NULL,_T("a的标题"));
    这样可以吗?
      

  5.   

    CWnd::GetParent()方法无参数,有参数的是API方法::GetParent
    (后者传入子窗口自身句柄m_hWnd即可,不过还是建议用前者。)最好的方式是父窗口调用子窗口方法,子窗口方法返回值或通过指针/引用型参数传出值。
    如果必需由子窗口发起,则如1L兔子所言,用发消息的方式。如果不要求子窗口类与父窗口类保持低耦合度(低依赖性)的话,直接引用父窗口类
    (将GetParent返回的指针强制转换为父窗口类指针)也没什么的。
      

  6.   


    狼 的意思是用Notify消息?未免有点麻烦吧,直接用常量消息或注册消息多省事啊:)
      

  7.   

    一般这样写:GetParent(GetSafeHwnd());
      

  8.   


    GetSafwHwnd()方法是外部调用窗体类时需要用的,有容错处理。
    在窗体类内部实现中,直接用m_hWnd就行了。再说一遍,CWnd::GetParent()无参数