MFC 子窗口怎么得到父窗口的父窗口的指针,并对父窗口的父窗口的按钮进行操作??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 子窗口怎么得到父窗口的父窗口的指针,并对父窗口的父窗口的按钮进行操作??相关的知识,希望对你有一定的参考价值。

参考技术A 子窗口获得父窗口指针 GetParent();
比如父窗体如下
CParentDlg : public CDialog

public:
CButton m_bt;

子窗体操作父窗体的按钮m_bt,可以这样(CParentDlg *)GetParent()->m_bt.SetWindowText("hello");追问

提示error C2039: 'm_bt' : is not a member of 'CWnd' 这种错误。。怎么办呢?
我的目的就是希望通过点击子窗口的按钮,使能父窗口的按钮(父窗口的按钮在父类初始化函数里被我设置为禁用了:GetDlgItem(IDC_CAOZUO)->EnableWindow(FALSE);)

追答

((CParentDlg *)GetParent())->->m_bt.SetWindowText("hello");

参考技术B 用AfxGetMainWnd可以获得主窗口的句柄追问

我在子类 函数里这么写
CMyDlg *pMMD = (CMyDlg*)AfxGetMainWnd();
GetDlgItem(IDC_CAOZUO,pMMD)->EnableWindow(TRUE);
可是报错error C2664: 'void __thiscall CWnd::GetDlgItem(int,struct HWND__ ** ) const' : cannot convert parameter 2 from 'class CMyDlg *' to 'struct HWND__ ** '
错误指向第二句的

追答

CDialog *pMMD = (CDialog*)AfxGetMainWnd();

本回答被提问者采纳

获取子窗口的父窗口的兄弟窗口方法

$($("body").find(‘#jbox-iframe‘)[0]).contents().find("#keywords").val(name  + "(" + code + ")");
$($("body").find(‘#jbox-iframe‘)[0]).contents().find("#keywords").attr("data-code",code);
$($("body").find(‘#jbox-iframe‘)[0]).contents().find("#pcode").text(name);
$($("body").find(‘#jbox-iframe‘)[0]).contents().find("#cguser").text(cguser);
$($("body").find(‘#jbox-iframe‘)[0]).contents().find("#ptel").text(tel);
$($("body").find(‘#jbox-iframe‘)[0]).contents().find("#choicechantid").text(merchantid);
$($("body").find(‘#jbox-iframe‘)[0]).contents().find(".choiceCnt").show();//显示发送信息


jbox-iframe为兄弟窗口,最有效的办法就是把当前窗口所要选择的值先付给父窗口,然后兄弟窗口再去父窗口获取所需要的值,这种功能在同时打开多个兄弟窗口时经常被使用到。

以上是关于MFC 子窗口怎么得到父窗口的父窗口的指针,并对父窗口的父窗口的按钮进行操作??的主要内容,如果未能解决你的问题,请参考以下文章

MFC 主窗口如何在创建的子窗口前

MFC子窗口调用父窗口控件问题,望大神解救~~~

在不关闭子窗口的情况下从子窗口返回焦点到父窗口(在mfc visual studio中)

关于Qt子窗口和父窗口的问题

MFC怎么把子窗口嵌入到父窗口中

Javascript 子窗口调用父窗口js方法