MFC 无法正确获取窗口句柄...大家帮帮忙。。。

CWnd*w=GetForegroundWindow();获取窗口句柄出错,尝试了很多方法还是没有办法取到hWnd... CWnd *w=GetForegroundWindow();
获取窗口句柄出错,尝试了很多方法还是没有办法取到hWnd
展开
 我来答
bhtzu
2014-07-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4183万
展开全部
你在一个对话框CTransClientDlg里面获取前台窗口的目的是什么?

一般来说,使用CWnd类的GetForegroundWindow获取的是指向前台窗口(使用用户当前)的顶级窗口,你的对话框有这个窗口么?从w的信息看,好像是没有这样一个合理的窗口存在。
如果是后台程序,那么应该使用API函数来获取,而不是CWnd类函数,即:

HWND hw = ::GetForegroundWindow();
更多追问追答
追问

SendMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_CLIENT_MSG,sd,(long )msg);


我后台的代码是这个,发送信息前台窗口没有反应,单步调试的时候错误跟上面的图片提示是一样的,用哪一个函数都没有办法。。不知道怎么办了。。

追答
你提供的几段代码比较奇怪。第一个跟踪窗口显示,代码是在对话框类里面,而追问中的显示,应该是在一个ClientThreadProc这样的函数里面吧。
看不明白你的窗口关系。如何获取窗口和句柄,关键是窗口之间的关系、调用处的线程关系两个方面。
如果AfxGetMainWnd()是错误的,那么就不是在主线程的框架窗口里面,而且存在其它问题才会有。而GetForegroundWindow对窗口关系的要求更苛刻。

你首先要确认一下,是否有线程(或者跨进程)、对话框是否模态调用、需要获取窗口句柄的地方究竟在哪里,是模态对话框中,还是框架外的工作线程里面。
chji5471
2014-07-01 · TA获得超过232个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:164万
展开全部
CWnd *w=GetForegroundWindow();函数结束后调用下DWORD er = GetLastError()查下错误代码是多少?
发出来看下
更多追问追答
追问
er没有值。。。0x00000000
追答
你能确定前台窗口是哪个吗,看下AfxGetMainWnd()->GetSafeHwnd()的hwnd是否和GetForegroundWindow()得到的hwnd是否一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式