win api如何一次性得到多个按钮的话柄,并使得用户点击另一个按钮,就隐藏这些按钮
时间: 2023-08-29 19:05:59 浏览: 46
可以使用窗口遍历函数`EnumChildWindows`来获取指定窗口下的所有子窗口句柄,然后将这些按钮句柄保存在一个数组中。当用户点击另一个按钮时,遍历这个数组,依次隐藏这些按钮。
具体实现步骤如下:
1. 定义一个数组来保存按钮句柄:
```
HWND hwndButtons[10];
```
2. 在窗口创建函数中,使用`FindWindowEx`函数获取按钮句柄,并保存在数组中:
```
for (int i = 0; i < 10; i++) {
hwndButtons[i] = FindWindowEx(hWnd, NULL, L"Button", NULL);
}
```
注意,这里假设有10个按钮,如果实际按钮数量不足10个,多余的数组元素将被初始化为NULL。
3. 在按钮点击的消息处理函数中,遍历按钮句柄数组,依次隐藏这些按钮:
```
for (int i = 0; i < 10; i++) {
if (hwndButtons[i]) {
ShowWindow(hwndButtons[i], SW_HIDE);
}
}
```
这里使用了`ShowWindow`函数将按钮隐藏,参数`SW_HIDE`表示隐藏窗口。
需要注意的是,如果要在多个窗口中使用这种方法隐藏按钮,需要对每个窗口分别进行遍历和隐藏操作。