由于要用到非模态对话框做工具面板,需要子框调用父框的成员变量及成员函数,
先前使用过发送消息的方案,同期试用父指针方法没有成功实现,
此次,成功实现了两种指针方案,如下:
方案一:父框创建子框,并传递指针。
p_dlg_filter = new Cdlg_filter;
p_dlg_filter->Create(IDD_DIALOG_midfilter,NULL);
p_dlg_filter->ShowWindow(SW_SHOW);
p_dlg_filter->m_pmain = (void *)this;
首先,子框类中生命一个void *m_pmain的公共变量,父框创建子框时,将该指针指向自己;
cvmat2d.copyTo(((CdishdectDlg *)m_pmain)->cvmat2);
(CdishdectDlg *)m_pmain)->Displaymat1();
然后,子框中使用该指针操作父框中的成员(成员变量cvmat2,成员函数displaymat1等)。
方案二:子框中直接创建指针继承(?)父框。
CdishdectDlg *pfilter1 = (CdishdectDlg *)GetParent();
pfilter1->cvmat1d.copyTo(cvmat2d);
pfilter1->Displaymat1();
直接声明父框指针继承父框,调用其成员变量及功能函数即可。
ps:文中:
CdishdectDlg---父框类名
p_dlg_filter---父框中的子框类指针变量
pps: 以上方法借鉴网络各家,若侵犯谁人自认为之版权,仅供笑尔~~~
先前使用过发送消息的方案,同期试用父指针方法没有成功实现,
此次,成功实现了两种指针方案,如下:
方案一:父框创建子框,并传递指针。
p_dlg_filter = new Cdlg_filter;
p_dlg_filter->Create(IDD_DIALOG_midfilter,NULL);
p_dlg_filter->ShowWindow(SW_SHOW);
p_dlg_filter->m_pmain = (void *)this;
首先,子框类中生命一个void *m_pmain的公共变量,父框创建子框时,将该指针指向自己;
cvmat2d.copyTo(((CdishdectDlg *)m_pmain)->cvmat2);
(CdishdectDlg *)m_pmain)->Displaymat1();
然后,子框中使用该指针操作父框中的成员(成员变量cvmat2,成员函数displaymat1等)。
方案二:子框中直接创建指针继承(?)父框。
CdishdectDlg *pfilter1 = (CdishdectDlg *)GetParent();
pfilter1->cvmat1d.copyTo(cvmat2d);
pfilter1->Displaymat1();
直接声明父框指针继承父框,调用其成员变量及功能函数即可。
ps:文中:
CdishdectDlg---父框类名
p_dlg_filter---父框中的子框类指针变量
pps: 以上方法借鉴网络各家,若侵犯谁人自认为之版权,仅供笑尔~~~