CDocument中获得窗口句柄

时间:2021-07-15 09:04:22
单文档界面中,如果在CDocument中获得其他对话框的句柄(用于SendMessage)

15 个解决方案

#1


CTestDoc,有个CDlg1;
现在CTestDoc想要给CDlg1发送消息,让CDlg1执行一个刷新CListCtrl(m_pList)的函数,并且需要传递一个CString类型的参数

#2


是我的分给的太少了么?为什么都没有人回呀?

#3


啊啊!为什么还是没人回答呢?等的急死了

#4


这个CDlg1你怎么调用的
它自己一定有句柄啊

#5


有必要用CDocument么?数据全部写在CDlg之中就可以了

#6


引用 4 楼 xianglitian 的回复:
这个CDlg1你怎么调用的
它自己一定有句柄啊

m_hWnd就是句柄

#7


不是的,我是做一个Socket的通讯,所以从Socket传来的数据我都经过了CDoc去处理,另外还有几个对话框,这些对话框也需要对接收到的Socket信息进行处理(回传或者更新自己的界面),但是我直接在CDoc中去调用对话框中的函数会出错,所以我就想在CDoc中给某个需要处理Socket信息的对话框发送消息,并传递一些参数过去,然后在对话框中处理这些消息

#8


你的对话框一定也是在主窗口或视图中建立的吧
这里一定维护了对话框指针
你可以发个消息给对话框的上层窗口让它统一处理

#9


是CFormView,CFormView上有个继承过的CTabCtrl控件,在CFormView的OnInitialUpdate里面我把这几个对话框放到了CTabCtrl里了,你的意思是其实在CFormView里面已经有了这几个对话框的句柄,我只要用个变量保存下来就可以了么?

#10


CDocumentTemplate只能获得View的句柄,其他窗体句柄要自己实现记录下来。

#11


我还是不太明白,到底要在什么地方保存对话框句柄,而且要怎么得到啊,能说的明白点么

#12


引用 9 楼 yayamao 的回复:
是CFormView,CFormView上有个继承过的CTabCtrl控件,在CFormView的OnInitialUpdate里面我把这几个对话框放到了CTabCtrl里了,你的意思是其实在CFormView里面已经有了这几个对话框的句柄,我只要用个变量保存下来就可以了么?

你创建对话框作为tab的选项页因该是通过非模态调用吧
应该是型如
pDlg-〉Create(ID);
这种方式吧
那pDlg这个指针你一定有啊
这里就有句柄啊

#13


都是模式对话框,不过我先试试都换成非模式对话框试试

#14


越搞越晕了,在对话框应用程序里很容易就得到窗口句柄了,一到这里面就出问题

#15


是非模式对话框,我搞错了

#1


CTestDoc,有个CDlg1;
现在CTestDoc想要给CDlg1发送消息,让CDlg1执行一个刷新CListCtrl(m_pList)的函数,并且需要传递一个CString类型的参数

#2


是我的分给的太少了么?为什么都没有人回呀?

#3


啊啊!为什么还是没人回答呢?等的急死了

#4


这个CDlg1你怎么调用的
它自己一定有句柄啊

#5


有必要用CDocument么?数据全部写在CDlg之中就可以了

#6


引用 4 楼 xianglitian 的回复:
这个CDlg1你怎么调用的
它自己一定有句柄啊

m_hWnd就是句柄

#7


不是的,我是做一个Socket的通讯,所以从Socket传来的数据我都经过了CDoc去处理,另外还有几个对话框,这些对话框也需要对接收到的Socket信息进行处理(回传或者更新自己的界面),但是我直接在CDoc中去调用对话框中的函数会出错,所以我就想在CDoc中给某个需要处理Socket信息的对话框发送消息,并传递一些参数过去,然后在对话框中处理这些消息

#8


你的对话框一定也是在主窗口或视图中建立的吧
这里一定维护了对话框指针
你可以发个消息给对话框的上层窗口让它统一处理

#9


是CFormView,CFormView上有个继承过的CTabCtrl控件,在CFormView的OnInitialUpdate里面我把这几个对话框放到了CTabCtrl里了,你的意思是其实在CFormView里面已经有了这几个对话框的句柄,我只要用个变量保存下来就可以了么?

#10


CDocumentTemplate只能获得View的句柄,其他窗体句柄要自己实现记录下来。

#11


我还是不太明白,到底要在什么地方保存对话框句柄,而且要怎么得到啊,能说的明白点么

#12


引用 9 楼 yayamao 的回复:
是CFormView,CFormView上有个继承过的CTabCtrl控件,在CFormView的OnInitialUpdate里面我把这几个对话框放到了CTabCtrl里了,你的意思是其实在CFormView里面已经有了这几个对话框的句柄,我只要用个变量保存下来就可以了么?

你创建对话框作为tab的选项页因该是通过非模态调用吧
应该是型如
pDlg-〉Create(ID);
这种方式吧
那pDlg这个指针你一定有啊
这里就有句柄啊

#13


都是模式对话框,不过我先试试都换成非模式对话框试试

#14


越搞越晕了,在对话框应用程序里很容易就得到窗口句柄了,一到这里面就出问题

#15


是非模式对话框,我搞错了