关于C++MFC窗口控件句柄获取问题

我想在MFC的菜单选项里面的事件处理函数里面获取窗口控件句柄,但是一直显示类型不兼容,窗口和窗口控件都无法获取到,求大神解答一下... 我想在MFC的菜单选项里面的事件处理函数里面获取窗口控件句柄,但是一直显示类型不兼容,窗口和窗口控件都无法获取到,求大神解答一下 展开
 我来答
bhtzu
2016-05-12 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4204万
展开全部

FindWindow函数是获取顶层窗口的函数,不能获取子窗口。

FindWindowEx才是获取指定窗口的子窗口句柄(指针)的函数,要成功获取,需要以下几个条件:

  1. 第一参数必须指定明确的父窗口,如果为NULL,则是获取顶层窗口(即,父窗口为桌面);

  2. 被查找窗口(控件)必须和第二参数是明确的父子关系,且子窗口不是模态窗口(模态窗口有些特殊,一般不这样获取);

  3. 子窗口获取可能不是一次成功,如果类似子窗口很多,可能需要判断hwndChildAfter。

从你图中代码,无法判断需要获取的是否是顶层窗口,如果是,那么第一参数要写ClassName,而不是你的资源号,比如这样:

CWnd* pwnd = FindWindow(NULL,_T("资源管理器"));

如果是希望获取子窗口,在MFC下不推荐使用这两个函数。

另外,报错是因为在UNICODE字符集的工程下,第一参数需要使用宽字节字符串,加上_T转换就可以了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式