您的位置:程序门 -> vc/mfc -> 界面



[sdk问题]如何获得子窗体句柄


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


[sdk问题]如何获得子窗体句柄[已结贴,结贴人:91program]
发表于:2007-10-23 15:42:22 楼主
我的问题是这样的:一个应用,在主窗体之上可以创建多个属于主窗体的子窗体,在子窗体上有各种控件。

我现在想得到子窗体的名柄!!!

使用getactivewindow()只能得到主窗体的句柄;
使用getforegroundwindow()只能得到主窗体的句柄;

使用getwindow()可以得到子窗体上控制的句柄,但不是子窗体的;
使用getforegroundinfo()可以得到子窗体和主窗体的句柄,但都不是子窗体的;

请问多位大侠,如何得到子窗体的句柄???
发表于:2007-10-23 15:46:271楼 得分:0
enumchildwindows
发表于:2007-10-23 15:50:592楼 得分:0
在你的窗体应用程序中,   假如有一按钮id:   idc_btn_test,   我们来获取它的句柄.

getdlgitem(idc_btn_test)     //   这一步就获取了此按钮的cwnd指针,   而在cwnd类里有m_hwnd成员函数,   此成员函数就是你要的子窗体(按钮)的句柄.

getdlgitem(idc_btn_test)-> setwindowtext("ok");     //   这样就设置了此按钮的text
发表于:2007-10-23 16:00:083楼 得分:10
对象调用getsafehwnd()函数就可以了
发表于:2007-10-23 16:02:224楼 得分:0
我是不是看错题目了?
sdk?句柄?
sdk本来就是用句柄来控制的,不知道句柄,怎么放子窗口?
发表于:2007-10-23 16:03:485楼 得分:10
或者说,楼主要查找某个窗口上的子窗口?
findwindow,enumwindow
发表于:2007-10-23 16:06:436楼 得分:0
楼上各位,我需要sdk的解决方案。

getsafehwnd()是mfc下的,不能使用。
enumchildwindows(),没有这个函数啊!
发表于:2007-10-23 16:08:407楼 得分:0
我需要win32   api的解决方案,不能使用mfc的。
我有是windows   ce下使用evc+api编程的。
发表于:2007-10-23 16:11:008楼 得分:0
我是通过全局钩子,截获自定义的按键消息,然后给我的应用的top-level窗体发送一个消息。
发表于:2007-10-23 16:15:169楼 得分:0
ce下当然没有enumchildwindows()

那就只能enumwindow(),getwindow()自己遍历了
发表于:2007-10-23 16:25:4810楼 得分:0
在创建时把子窗口句柄保存下来。
发表于:2007-10-23 16:28:4111楼 得分:0
保存下来,可是钩子dll中,不知道某个时候,那个子窗体在顶层啊!
不可能所有子窗体都发一次吧。
发表于:2007-10-23 17:30:1112楼 得分:0
问一个基本的问题

如果应用的主窗体有几层子窗体,当某个子窗体处于顶层时:
此时,得到应用程序的句柄,给它发消息。消息的处理过程是什么样的?

会不会先由顶层的子窗体处理,然后再传到主窗体的消息处理处?

多谢!
发表于:2007-10-23 23:25:4913楼 得分:80
我来结贴吧:
hwnd   hwndchild   =   ::getwindow(   m_hwnd,   gw_child);    
while(hwndchild)      
{      
sendmessage(wm_xxxxx_msg,wp,lp);
hwndchild   =   ::getwindow(   hwndchild,   gw_hwndnext);      
}    
发表于:2007-10-24 08:28:5614楼 得分:0
楼上的正解!
结贴。


快速检索

最新资讯
热门点击