--写给C++ Builder Win32 SDK/API 论坛
声明:所有转载需要注明 URL 原始链接。这些链接应当来自于www.csdn.com。
这里主要用到EnumWindows函数来遍历所有顶层窗口。
原音重现:
BOOL EnumWindows( WNDENUMPROC lpEnumFunc, // callback function LPARAM lParam // application-defined value);
这个函数需要一个自定义的回调函数EnumWindowsProc,
原音重现:
BOOL CALLBACK EnumWindowsProc( HWND hwnd, // handle to parent window LPARAM lParam // application-defined value);
好了,现在我们开始统计吧:
int iWndNums; //窗口的数量
BOOL CALLBACK EnumWindowsProc(
HWND hwnd, // handle to parent window
LPARAM lParam // application-defined value
)
{
if(hwnd==NULL)
{
return false; //结束枚举
}
//这个hwnd就是枚举到的当前窗体的句柄
//统计窗口的数量
iWndNums++;
//继续枚举
return true;
}
//---------------------------------------------------------------------------
//测试
void __fastcall TForm1::TestBitBtnClick(TObject *Sender)
{
LPARAM lmyParam;
bool bRet;
iWndNums=0;
//枚举顶层窗口
bRet=EnumWindows((WNDENUMPROC)EnumWindowsProc,lmyParam);
//iWndNums的值就是统计的顶层窗口的数量
}
以上CB5编译通过。