ctabctrl标签页 互相通信

chuengchuenghq 2010-01-29 11:00:40

class CDebugView:
void CDebugView::OnInitialUpdate()
{

CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();

m_tabCtrl.InsertItem(0,_T("Local Variables")); //CTabCtrl
m_tabCtrl.InsertItem(1,_T("Watch"));

m_dlgLocalVar.Create(IDD_RD_LOCALVARIABLES,&m_tabCtrl);//CLocalVariableDlg
if(m_dlgLocalVar.m_hWnd != NULL)
m_dlgWatch.Create(IDD_RD_LOCALVARIABLES,&m_tabCtrl);//CWatchDlg




// 在CTABCTRL上加了两个DIALOG



void CLocalVariableDlg::OnAddWatch()
{
RD_NMHDR nHMdr;
nHMdr.info = itemif;
nHMdr.hdr.idFrom = GetDlgCtrlID();
nHMdr.hdr.code = ADD_WAT;
nHMdr.hdr.hwndFrom = m_hWnd;


CWnd *pOwner = GetOwner();
if(::IsWindow(GetDlgItem(IDD_RD_WATCH)->GetSafeHwnd())) //代表CWatchDlg
{
GetDlgItem(IDD_RD_WATCH)->SendMessage(WM_NOTIFY,nHMdr.hdr.idFrom,(LPARAM)&nHMdr);
}




}




上面我发送消息给CWatcgDlg总是失败,我不能在CLocalVariableDlg中得到CWatchDlg的句柄。
如果我想在CLocalVariableDlg发送信息给CWatchDlg,应该怎么做?

...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2010-01-29
  • 打赏
  • 举报
回复
((CDebugView*)GetParent()->GetParent())->m_dlgWatch.SendMessage(……
chuengchuenghq 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xsc2001 的回复:]
这种你应该在各个Tab页的父类里记录下各个子窗口的句柄,比如在CDebugView里的OnInitialUpdate()里把两个子窗口的句柄分别传给对方,这样双方就可以通过它向对方发消息。也可以直接定义成对方的窗口指针成员变量记录下来,这样用的时候直接通过这个变量调用对方的函数就行了。
[/Quote]

如果我想在clocalvariabledlg中 用CDebugView的 成员
怎么做?
xsc2001 2010-01-29
  • 打赏
  • 举报
回复
这种你应该在各个Tab页的父类里记录下各个子窗口的句柄,比如在CDebugView里的OnInitialUpdate()里把两个子窗口的句柄分别传给对方,这样双方就可以通过它向对方发消息。也可以直接定义成对方的窗口指针成员变量记录下来,这样用的时候直接通过这个变量调用对方的函数就行了。
chuengchuenghq 2010-01-29
  • 打赏
  • 举报
回复
up
chuengchuenghq 2010-01-29
  • 打赏
  • 举报
回复
谢谢 楼上 两位 高人
oyljerry 2010-01-29
  • 打赏
  • 举报
回复
要么创建对话框等的时候保存父指针,或者用GetParent()来获取父类指针,递推上去,就可以获得view的指针...

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧