谁能给一个使用EnumChildWindows遍历窗体所有子窗体的示例阿,万分感谢! 谁能给一个使用EnumChildWindows遍历窗体所有子窗体的示例阿 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL CALLBACK Cemuwin::EnumChildProc(HWND hwnd,LPARAM lParam) { WinAry_hwnd.Add((unsigned long)hwnd); EnumChildWindows(hwnd,EnumChildProc,(long)0); return TRUE; } BOOL CALLBACK Cemuwin::EnumWindowsProc(HWND hwnd, LPARAM lParam) { WinAry_hwnd.Add((unsigned long)hwnd); EnumChildWindows(hwnd,EnumChildProc,(long)0); return TRUE; } 调用 EnumWindows(EnumWindowsProc,(long)0); 就行了 不使用EnumChildWindows也可以#include <windows.h>#include <STDIO.H>BOOL myEnumWindow(HWND hwnd);int main(){myEnumWindow(NULL);//把NULL换成你要枚举的窗口的句柄return 0;}BOOL myEnumWindow(HWND inHwnd){char szText[256];HWND hwndAfter = NULL;while(hwndAfter = ::FindWindowEx(inHwnd,hwndAfter,NULL,NULL)){memset(szText,0,256);::SendMessage(hwndAfter,WM_GETTEXT,(WPARAM)256,(LPARAM)szText);printf("%s\t",szText);myEnumWindow(hwndAfter);}return 1;} LRESULT WINAPI KeyBoardProc(int nCode,WPARAM wParam,LPARAM lParam){ file://keyboard hook proc if(nCode>=0) { HWND hTargetHwnd=GetActiveWindow(); file://get active window if(hTargetHwnd) EnumChildWindows(hTargetHwnd,EnumWndProc,0); file://枚举所有窗口 } return CallNextHookEx(hKeyBoardHook,nCode,wParam,lParam); file://加上这句,就可以继续传递消息,如果没有,则会取消此消息的传递, file://可以起到截儿消息的目的,我们这里调用之。} 这里要介绍下EnumChildWindows函数,原形如下: BOOL EnumChildWindows(HWND hWndParent,WINDENUMPROC lpEnumFunc,LPARAM lParam); hWndParent:为枚举窗口的句柄 lpEnumFunc:枚举函数的地址, lParam:这里为0 请问大家?listctrl(ICON形式的),如何改变选中时的背景颜色? 要项目推广了,各位给点意见 曲面相交算法 MDI程序.主框架和子窗口都是FormView来的。子窗口固定大小。如何给主框架添加滚动条 请问,大家都用VC6做什么啊 控件为何不能响应上、下、左、右键 COM\CORBA\EJB的前景如何?哪个好些?请讨论! 一个非常弱智的问题,谢谢大家 各位大虾、小虾,救命啊!!! 各位大哥:求救!!!关于wchar_t类型赋值问题!!!! SOCKET通讯中如何实现数据分隔,和拼接? 如何创建工具栏
{
WinAry_hwnd.Add((unsigned long)hwnd);
EnumChildWindows(hwnd,EnumChildProc,(long)0);
return TRUE;
} BOOL CALLBACK Cemuwin::EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
WinAry_hwnd.Add((unsigned long)hwnd);
EnumChildWindows(hwnd,EnumChildProc,(long)0);
return TRUE;
} 调用 EnumWindows(EnumWindowsProc,(long)0); 就行了
#include <STDIO.H>
BOOL myEnumWindow(HWND hwnd);
int main()
{
myEnumWindow(NULL);//把NULL换成你要枚举的窗口的句柄
return 0;
}BOOL myEnumWindow(HWND inHwnd)
{
char szText[256];HWND hwndAfter = NULL;
while(hwndAfter = ::FindWindowEx(inHwnd,hwndAfter,NULL,NULL))
{
memset(szText,0,256);
::SendMessage(hwndAfter,WM_GETTEXT,(WPARAM)256,(LPARAM)szText);
printf("%s\t",szText);
myEnumWindow(hwndAfter);
}
return 1;
}
{ file://keyboard hook proc if(nCode>=0)
{
HWND hTargetHwnd=GetActiveWindow(); file://get active window
if(hTargetHwnd)
EnumChildWindows(hTargetHwnd,EnumWndProc,0); file://枚举所有窗口
} return CallNextHookEx(hKeyBoardHook,nCode,wParam,lParam);
file://加上这句,就可以继续传递消息,如果没有,则会取消此消息的传递,
file://可以起到截儿消息的目的,我们这里调用之。
} 这里要介绍下EnumChildWindows函数,原形如下:
BOOL EnumChildWindows(HWND hWndParent,WINDENUMPROC lpEnumFunc,LPARAM lParam);
hWndParent:为枚举窗口的句柄
lpEnumFunc:枚举函数的地址,
lParam:这里为0