MFC 怎么在线程中获取当前子窗口的句柄(应用:基本对话框)

MFC 怎么在线程中获取当前子窗口的句柄(应用:基本对话框),第1张

 CWnd pWnd=CWnd::FindWindow(NULL,_T("EightPuzzle"));//获取目标窗口

 pWnd->SendMessage(/消息的代号/,NULL,0);//发送消息

GetDlgItem()//只有一个参数就是你要获取的子窗口的ID,返回值是一个指向CWnd类的指针.该函数可以根据一个ID号获取一个对应的对象指针,在任何派生自CWnd类的类中都可以使用.如果你非要句柄的话.那就

CWnd pWnd= GetDlgItem(/子窗口ID/);

pWnd->m_HWnd;//得到这个子窗口的句柄

你在一个对话框CTransClientDlg里面获取前台窗口的目的是什么?

一般来说,使用CWnd类的GetForegroundWindow获取的是指向前台窗口(使用用户当前)的顶级窗口,你的对话框有这个窗口么?从w的信息看,好像是没有这样一个合理的窗口存在。

如果是后台程序,那么应该使用API函数来获取,而不是CWnd类函数,即:

HWND hw = ::GetForegroundWindow();

首先,你想要在某个窗口做一些事情,你就得让 *** 作系统知道你是在哪一个窗口做这些事情,而窗口的句柄就能起到识别哪一个窗口的作用;获取窗口句柄的方法(或者说是函数)有很多,有的函数是获得当前主窗口的句柄,有的函数获得子窗口的句柄,还有的函数可以获得你指定的那个窗口的句柄,你想获得哪个窗口的句柄就调用相应的函数就可以了; 然后,获得窗口句柄以后,你就可以利用这个窗口句柄做你那些想做的事情了。比如,设置窗口的风格,改变窗口的标题,隐藏这个窗口等等,如果你不知道能做什么,没事,等你实际用到的时候,需要你在某个窗口做事情的时候,你就知道了该做什么事情了。 希望对你有帮助。

补充一点,如果你是用静态分割产生的分割视图,可以充分利用CSplitterWnd的GetPane函数,比如,在CmylView中去获取CmyView的窗口句柄(假设CmyView在分割的0行0列):

CSplitterWnd ps = (CSplitterWnd )GetParent();

CmyView pView = (CmyView )(ps->GetPane(0,0));

pView - >m_hWnd即可获得该视图窗体的句柄

以上就是关于MFC 怎么在线程中获取当前子窗口的句柄(应用:基本对话框)全部的内容,包括:MFC 怎么在线程中获取当前子窗口的句柄(应用:基本对话框)、MFC 自定义类中如何获取子窗口句柄、MFC 无法正确获取窗口句柄...大家帮帮忙。。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9854657.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存