zoukankan      html  css  js  c++  java
  • MFC中 通过对子对话框的操作来更新主对话框

    使用Tab Control 控件时,需要建子对话框。

    我想实现点击标签上的List Control控件时,主对话框上的编辑框控件能得到更新。然而List Control控件是在子对话框上。百度了好久,有人说主对话框不能处理子对话框的消息,即点击标签时无法通知主对话框。

    解决办法:

      在子对话框中通过GetParent()获取主对话框的指针,然后就可以调用它的成员了。

      注意:一般Tab控件的父窗口是主对话框,Tab控件子对话框的父窗口是Tab控件,所以现在Tab控件子对话框中获取父窗口(即Tab控件),然后利用Tab控件获取父窗口(即主对话框)。

    如下面代码:

    void CPoetrySortDlg::OnDblclkPoetryList(NMHDR *pNMHDR, LRESULT *pResult)
    {
        LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
        // TODO: 在此添加控件通知处理程序代码
        *pResult = 0;
    
        NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR;   
    
        if (-1 != pNMListView->iItem)        // 如果iItem不是-1,就说明有列表项被选择   
        {   
            // 获取被选择列表项第一个子项的文本   
            CString strPoetryName = m_poetryList.GetItemText(pNMListView->iItem, 0);   
    
            CWnd *pParentDlg = static_cast<CWnd*>(this->GetParent()->GetParent());   //获取主对话框的指针
            CEdit* pCtrl = static_cast<CEdit*>(pParentDlg->GetDlgItem(IDC_APOETRY_EDIT));  //获取主对话框中编辑框控件的指针
            UINT ID = pCtrl->GetDlgCtrlID();    //获取主对话框上编辑框控件的ID
    
            // 将文本显示在编辑框中  
            pParentDlg->SetDlgItemText( ID , strPoetryName);
        }   
    }
  • 相关阅读:
    python生成四位随机数
    解决mysql远程连接失败的问题
    python中的sort、sorted排序
    rest_framework之status HTTP状态码
    vim的卸载以及环境的配置小记
    vue项目如何引用jquery
    VSCode 安装Vue 插件
    Element-UI tree 组件 点击后高亮显示的样式修改(背景色)
    webstorm安装vue插件及安装过程出现的问题
    Vue el-date-picker 日期组件的使用
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3125320.html
Copyright © 2011-2022 走看看