窗体控件遍历有关问题
窗体控件遍历问题
如何遍历某一个窗口下的所有子窗口以及子窗口的下层窗口?
就是spy++能查到的程序下的所有的子窗口。
因为我需要修改一个控件的属性,不确定窗体,只确定控件。
请帮忙给出个思路和逻辑关系,谢谢。
使用GetWindow或者EnumChildWindows都行。
我只能写出遍历子窗口,但不知道遍历子窗口的子窗口该怎么写了。
------解决方案--------------------
一样的啊,还不是用GetWindow/EnumChildWindows()
------解决方案--------------------
同一楼。可参考下简易spy++的源码
http://download.****.net/download/jingxianmoyang/328722
------解决方案--------------------
BOOL CALLBACK EnumChildProc( HWND hwnd, LPARAM lParam )
{
if(IsWindow(hwnd))
{
CString str;
str.Format(L"parent hwnd: %0x, child hwnd:%0x \r\n", (HWND)lParam, hwnd);
OutputDebugString(str);
if(!EnumChildWindows(hwnd, EnumChildProc, (LPARAM)hwnd))
{
//error stop enum
return TRUE;
}
}
return FALSE;
}
bool GetChildWindow(HWND hwnd)
{
return EnumChildWindows(hwnd, (WNDENUMPROC)EnumChildProc, (LPARAM)hwnd);
}
当遇到问题时,最好自已查一下MSDN,上面都有详细的说明。
如何遍历某一个窗口下的所有子窗口以及子窗口的下层窗口?
就是spy++能查到的程序下的所有的子窗口。
因为我需要修改一个控件的属性,不确定窗体,只确定控件。
请帮忙给出个思路和逻辑关系,谢谢。
使用GetWindow或者EnumChildWindows都行。
我只能写出遍历子窗口,但不知道遍历子窗口的子窗口该怎么写了。
------解决方案--------------------
一样的啊,还不是用GetWindow/EnumChildWindows()
------解决方案--------------------
同一楼。可参考下简易spy++的源码
http://download.****.net/download/jingxianmoyang/328722
------解决方案--------------------
BOOL CALLBACK EnumChildProc( HWND hwnd, LPARAM lParam )
{
if(IsWindow(hwnd))
{
CString str;
str.Format(L"parent hwnd: %0x, child hwnd:%0x \r\n", (HWND)lParam, hwnd);
OutputDebugString(str);
if(!EnumChildWindows(hwnd, EnumChildProc, (LPARAM)hwnd))
{
//error stop enum
return TRUE;
}
}
return FALSE;
}
bool GetChildWindow(HWND hwnd)
{
return EnumChildWindows(hwnd, (WNDENUMPROC)EnumChildProc, (LPARAM)hwnd);
}
当遇到问题时,最好自已查一下MSDN,上面都有详细的说明。