【发布时间】:2019-05-29 12:29:57
【问题描述】:
我正在使用 c++ 和 winapi 制作一个程序,您可以在其中单击一个按钮,然后选择一个窗口,它会更改该窗口的透明度。
我没有让窗口透明的问题,但我无法获得窗口的 hwnd。
当我使用这个函数时,程序会崩溃(没有错误被打印到控制台)。
HWND getHWND(HWND self)
{
HWND found = GetForegroundWindow();
if(found == self || found == NULL)
return getHWND(self);
return found;
}
我尝试过使用它,但我不喜欢它,因为用户只有 2 秒的时间来点击另一个窗口。 (我知道我可以使用更大的延迟,但它可能会太多......所以这不是最佳的)
HWND getHWND()
{
Sleep(2000);
return GetForegroundWindow();
}
【问题讨论】:
-
恭喜,你有一个堆栈溢出。只需使用简单的
while循环,而不是让你的函数递归。 -
谢谢,这样效率更高。
-
您正在单击由其他应用程序创建的窗口,并且有自己的进程正在等待前台窗口更改?