如果你用MFC则手工在对话框的消息映射中加入对该消息的响应;
如果用API则在对话框的回调函数中加入对该消息的响应;
         

解决方案 »

  1.   

    可以用如下代码:
    CTestDialog dlg;
    dlg.hList.AddString("adfs");
    dlg.hList.AddString("kll");
    当然,hList可以用ClassWizard来生成.
      

  2.   

    容我再说得详细一点:
    我的子对话框是在一DLL中,现在我在客户程序中发送消息改变列表框中的内容。我如果采用自定义消息,先由子对话框处理该消息,再把得到的值传递给列表框是可以实现的。现在老板要求我不用自定义消息,而用常规LB_ADDSTRING直接向列表框发送。但我在客户程序中只知道对话框的ID,如何是好?
      

  3.   

    你现在已经得到对话框的句柄hdd,和列表框的idList。
    我用下面的代码简单的测试了一下。可以,不过我没有在dll中试过,应该是一样的
    //CExam001View.hpp
    Class CExam001View:public CView
    {
        ........
       CMyDlg dlg;            //非模态对话框
       .......
    }
    //////////CExam001View.cpp
    //////////
    ....
      void CExam001View::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    //非模态对话框
       
             dlg.Create(130,NULL);//130是dlg的id CView::OnLButtonDown(nFlags, point);
    }.......
    void CExam001View::OnRButtonDown(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    HWND hList=::GetDlgItem(dlg.m_hWnd,IDC_LIST1);
             //直接对列表框控件发消息,列表框控件本质上也是一个窗口
    ::SendMessage(hList,LB_ADDSTRING,0,(LPARAM)"hello world");
    CView::OnRButtonDown(nFlags, point);
    }调试通过。
    祝你好远!