当前位置: 行情首页 >> 技术文章 >> 技术文章 >> 如何获得指定hwnd窗口下所有子

  • 如何获得指定hwnd窗口下所有子窗口的hwnd VC/MFC / 基础类
  • 2007-10-22 10:01:37 杭州电脑数码城 转载来源:csdn.net
  • 社区 - VC/MFC / 基础类

    如何获得指定hwnd窗口下所有子窗口的hwnd

    qianqian (钱钱) 2000-03-01 22:22:00在 VC/MFC / 基础类 提问

    我在用VB写一个东西,有几个问题,一起说了吧,各位VC大虾请不吝赐教:

    1.现在获得了某个窗口的Hwnd,试图通过GetNextDlgTabItem获得所有子窗口控件,但发现如static等control的内容不能获得。
    2.如何获得某个子窗口的class名称。
    3.到底有什么方法能够实现把所有某窗口的子窗口全部列出来的?

    希望您告诉我win32api函数,而不是mfc的函数。
    问题点数:50、回复次数:6

    1楼 canyan () 回复于 2000-03-01 22:58:00 得分 20


    1.用Win32 API函数h=GetWindow(Hwnd,GW_CHILD)
    结合GetNextWindow(A,GW_HWNDNEXT) //A位GetWindow()函数的返回值
    2.不是所有的Window都有句柄(Handle)的.
    具体语法请看WIN32联机帮助。

    2楼 canyan () 回复于 2000-03-01 23:02:00 得分 0


    sorry,写错了,我是说不是所有的控件都有窗口句柄的

    3楼 hubdog () 回复于 2000-03-01 23:16:00 得分 7


    1.static control没有窗口句柄,应该是通过vb的方法吧?不太清楚
    2.getclassname可以获得窗口的类名
    3.findwindowex边历后可以获得所有的子窗口
    都是win32api

    4楼 fupf88 (从此萧郎是路人) 回复于 2000-03-01 23:27:00 得分 3


    HWND GetDlgItem(
    HWND hDlg, // handle of dialog box
    int nIDDlgItem // identifier of control
    );

    5楼 929 () 回复于 2000-03-02 09:10:00 得分 20


    用下面的函数创建枚举某一窗口子窗口听回调:
    BOOL EnumChildWindows(

    HWND hWndParent, // handle to parent window
    WNDENUMPROC lpEnumFunc, // pointer to callback function
    LPARAM lParam // application-defined value
    );
    可以在VB中写好函数后,用ADDRESSOF把这个函数指针传给ENUMCHILDWINDOWS中的LPENUMFUNC来实现。当然获得窗口的句柄后,再对这个窗口如何操作,就看需要了。
    比如:
    int GetClassName(

    HWND hWnd, // handle of window
    LPTSTR lpClassName, // address of buffer for class name
    int nMaxCount // size of buffer, in characters
    );
    DWORD SetClassLong(

    HWND hWnd, // handle of window
    int nIndex, // index of value to change
    LONG dwNewLong // new value
    );等等。

竟价广告:

    业界行情新闻声明事项:

    • ☉本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性!
    • ☉如其他媒体、网站或个人从本网下载使用,必须保留本网注明的“稿件来源”,并自负版权等法律责任。如对稿件内容有疑议,请及时与我们联系.
    • ☉如本网转载稿涉及版权等问题,请作者在速来电或来函与杭州电脑数码城网联系.
    • ☉本站网址:http://www.ititt.com/投诉邮箱:6371222@qq.com