CAD工具之家's Archivers

From boitboy on 2013-07-09 21:25:33

vc-api-枚举所有子窗口实例

我经常想枚举一个父窗口的所有子窗口,网上搜索了很多都没有搞的太懂,经过多次实践,总算搞明白了,发一个最简单的实例,希望能给大家带来帮助 实例:枚举QQ登陆这个窗口所有的子窗口 #include <windows.h> #include <stdio.h> BOOL CALLBACK EnumChildProc(HWND,LPARAM);//回调函数原型 int num; static HWND hwnd_find;//用于记录父窗口 int main() { hwnd_find=FindWindow(NULL,"QQ用户登录");//寻找游戏窗口 if(!hwnd_find) MessageBox(hwnd_find,"未发现QQ登陆窗口,请确认","Error",MB_OK);//如果没有找到出现没有找到的提示信息 else EnumChildWindows(hwnd_find,(WNDENUMPROC)EnumChildProc,(LPARAM)NULL); //此处的上一句是重点 (WNDENUMPROC)EnumChildProc可以理解成是一个函数地址,只要还有子窗口 //它就会调用这个函数,也就是下面的回调函数    return 0; } BOOL   CALLBACK   EnumChildProc(HWND hwnd,LPARAM lParam) { if   (hwnd) //如果子窗口存在 { num++;//记录窗口数目的num自增 char   chText[MAX_PATH];//用来储存窗口的Text   ZeroMemory(chText,MAX_PATH); // ZeroMemory宏用0来填充一块内存区域 GetWindowText(hwnd,chText,MAX_PATH);//获取窗口的标题 if(chText[0])//如果窗口标题非空的话 {    sprintf(chText,"找到标题为: %s   的窗口一个,共计%d个窗口",chText,num);    //格式化chText MessageBox(hwnd,chText,"找到子窗口",MB_OK);//提示信息 } else {    sprintf(chText,"找到标题为空的窗口一个,共计%d个窗口",num);    //格式化chText MessageBox(hwnd,chText,"找到子窗口",MB_OK);//提示信息 } return   TRUE;   }   return   FALSE; }

查看完整版本: vc-api-枚举所有子窗口实例

Tags: EnumChildWindows, EnumWindows, 枚举窗体


©CAD工具之家
创办于:2013年5月24日