MFC 无法正确获取窗口句柄...大家帮帮忙。。。
CWnd*w=GetForegroundWindow();获取窗口句柄出错,尝试了很多方法还是没有办法取到hWnd...
CWnd *w=GetForegroundWindow();
获取窗口句柄出错,尝试了很多方法还是没有办法取到hWnd 展开
获取窗口句柄出错,尝试了很多方法还是没有办法取到hWnd 展开
展开全部
你在一个对话框CTransClientDlg里面获取前台窗口的目的是什么?
一般来说,使用CWnd类的GetForegroundWindow获取的是指向前台窗口(使用用户当前)的顶级窗口,你的对话框有这个窗口么?从w的信息看,好像是没有这样一个合理的窗口存在。
如果是后台程序,那么应该使用API函数来获取,而不是CWnd类函数,即:
HWND hw = ::GetForegroundWindow();
一般来说,使用CWnd类的GetForegroundWindow获取的是指向前台窗口(使用用户当前)的顶级窗口,你的对话框有这个窗口么?从w的信息看,好像是没有这样一个合理的窗口存在。
如果是后台程序,那么应该使用API函数来获取,而不是CWnd类函数,即:
HWND hw = ::GetForegroundWindow();
更多追问追答
追问
追答
你提供的几段代码比较奇怪。第一个跟踪窗口显示,代码是在对话框类里面,而追问中的显示,应该是在一个ClientThreadProc这样的函数里面吧。
看不明白你的窗口关系。如何获取窗口和句柄,关键是窗口之间的关系、调用处的线程关系两个方面。
如果AfxGetMainWnd()是错误的,那么就不是在主线程的框架窗口里面,而且存在其它问题才会有。而GetForegroundWindow对窗口关系的要求更苛刻。
你首先要确认一下,是否有线程(或者跨进程)、对话框是否模态调用、需要获取窗口句柄的地方究竟在哪里,是模态对话框中,还是框架外的工作线程里面。
展开全部
CWnd *w=GetForegroundWindow();函数结束后调用下DWORD er = GetLastError()查下错误代码是多少?
发出来看下
发出来看下
更多追问追答
追问
er没有值。。。0x00000000
追答
你能确定前台窗口是哪个吗,看下AfxGetMainWnd()->GetSafeHwnd()的hwnd是否和GetForegroundWindow()得到的hwnd是否一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询