在主对话框有TAB控件
有二个子对话框,一个叫IDD_DIALOG_Site,一个是IDD_DIALOG_Directory,
其中在IDD_DIALOG_Site子对话框上是List控件,其模式是LIST或小图标,
在IDD_DIALOG_Directory也是list控件,其中是report模式,主要想实现的功能是:一在主对话框中选择SITE,弹出SITE的属性页(即子对话框IDD_DIALOG_Site),并显示SITE中的数据和响应鼠标左击或右击事件。左击是加载另一函数,右击是弹出一个小的修改对话框,二在主对话框中选择Directory,弹出Directory的属性页(即子对话框IDD_DIALOG_Directory),并显示Directory中的数据和响应鼠标左击事件(单击和双击事件的结果一样,调用同一个函数)现在要在这二个子对话框上显示数据和响应鼠标单击或双击消息,问题一:如何显示数据(此数据为数据库查询得到),已在子对话框中添加
BOOL CDialog2::OnInitDialog() 
{
CDialog::OnInitDialog();
}
不知这种方法是否正确,或另外如何操作,问题二:响应鼠标单击的事件,是否和在主对话框中一样处理,具体如何处理。在CSDN上有查到相类的问题,但是都没有写出具体的步骤或详细的代码,请高手指教。

解决方案 »

  1.   

    问题一: 你的数据是要显示在属性页的list中吧,那就在属性页对应的对话框类的初始化函数中添加进list好了
            (只是不知道你的数据库查询来的数据保存到什么地方去了)
    问题二: 当然可以,就像主对话框中一样处理
      

  2.   

    问题一:就是不知道具体如何添加
    比如:原来在主话框中oninitdialog中的代码:CRect rect;
    m_list.GetClientRect(&rect);
    int nColInterval = rect.Width()/5;

    m_list.InsertColumn(0, _T("URL Name"), LVCFMT_LEFT, nColInterval*3);
    m_list.InsertColumn(1, _T("Rank"), LVCFMT_LEFT, nColInterval);
    m_list.InsertColumn(2, _T("Description"), LVCFMT_LEFT, rect.Width()-4*nColInterval); m_list.InsertItem(0,"www.baidu.com");
    m_list.InsertItem(1,"www.sohu.com");
    现在如何添加到子对话框中,
    BOOL CDialog2::OnInitDialog() 
    {
    CDialog::OnInitDialog();
    } Ps:在子对话框是的LIST控件拖放在子对话框中的,用ClassWizard不能为这个list控件添加成员变量和消息等,具体要如何处理。谢谢
      

  3.   

    在子对话框中加入下面的代码,成功编译,但运行时无法显示插入LIST控件的内容。
    (已经在DIALOG中添加m_cListCtrl的成员变量,类型为CListCtrl)BOOL CDialog2::OnInitDialog() 
    {
    CDialog::OnInitDialog();

    // TODO: Add extra initialization here
    //dir_dialogCRect rect;
    m_cListCtrl.GetClientRect(&rect);
    int nColInterval = rect.Width()/5;m_cListCtrl.InsertColumn(0, _T("URL Name"), LVCFMT_LEFT, nColInterval*3);
    m_cListCtrl.InsertColumn(1, _T("Rank"), LVCFMT_LEFT, nColInterval);
    m_cListCtrl.InsertColumn(2, _T("Description"), LVCFMT_LEFT, rect.Width()-4*nColInterval);m_cListCtrl.InsertItem(0,"www.baidu.com");
    m_cListCtrl.InsertItem(1,"www.sohu.com"); 

    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
    }
      

  4.   

    参见  VC大全(精华版)源代码的例子Common Controls.
      

  5.   

    全称是否Visual C++程序员实用大全(精华版)源代码
      

  6.   

    看他的源码,可以在子对话框中使用ClassWizard,我的不行,
    另他的代码很复杂喔,可否讲解下。
      

  7.   

    我看Visual C++程序员实用大全(精华版)源代码好像用用class CPropertyPage : public CDialog这个类的未找到主对话框,也不知道为什么我的子对话框中用ClassWizard无法看到list控件的ID(已选中子对话框)
      

  8.   

    问题找到了,原来是子对话框的LIST控件中成员变量为m_list_dir.可能是多了一个下划线不行,
    改变量为m_listdir就可以了也就是说问题一显示可以了,搞定。现在是问题二
    在程序运行时,点击主对话框上显示的LIST控件,其中的LIST控件是在子对话框上,
    获取单击或双击的消息,是在主对话框中添加函数和处理,还是在子对话框中处理呢》
      

  9.   

    你的list添加在子对话框上,就在子对话框中响应list的单击和双击
      

  10.   

    已经在其中的一个LIST控件的对话框上添加些函数,加载m_browser.Navigate(strurl,NULL,NULL,NULL,NULL);
    出错,即webbrowser控件的函数,webbrowser函数在主话框中插入的,在子对话框中已经添加webbrowser2.h头文件,和主对话框的头文件