检测 window 最小化状态的最佳替代方案?
Best alternative for detecting Minimized state of a window?
我需要检测特定 window 是否已最小化。为此,我找到了两个函数:
1.
function PAIsWindowMinimized(h: HWND): Boolean;
// Detects whether a window is minimized or not
var
wp: Winapi.Windows.WINDOWPLACEMENT;
begin
wp.length := SizeOf(Winapi.Windows.WINDOWPLACEMENT);
Winapi.Windows.GetWindowPlacement(h, @wp);
Result := wp.showCmd = Winapi.Windows.SW_SHOWMINIMIZED;
end;
2.
// Alternative (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-isiconic):
Winapi.Windows.IsIconic(h);
两种选择中哪一种更可取?或者它们在所有情况下都同样出色?
'best' 备选方案正在调用
(GetWindowLong(hwnd, GWL_STYLE) & WS_MINIMIZE)
.
我检查了反汇编程序中的 IsIconic 和 GetWindowPlacement 函数,并且都在内部将 windows 样式与 WS_MINIMIZE 标志以确定 window 是否被最小化。
IsIconic()
是检查 window 是否最小化的 正确且有记录的 方法:
Determines whether the specified window is minimized (iconic).
The IsZoomed
and IsIconic
functions determine whether a given window is maximized or minimized, respectively. The GetWindowPlacement
function retrieves the minimized, maximized, and restored positions for the window, and also determines the window's show state.
使用其他任何东西充其量只是一种技巧。 IsIconic()
和 GetWindowPlacement()
在内部检查 WS_MINIMIZE
window 样式的 HWND 只是一个 实现细节 。使用这些函数而不是手动检查 window 样式的开销可以忽略不计。
坚持使用 IsIconic()
,它是 Microsoft 专门为此目的提供的 API。
我需要检测特定 window 是否已最小化。为此,我找到了两个函数:
1.
function PAIsWindowMinimized(h: HWND): Boolean;
// Detects whether a window is minimized or not
var
wp: Winapi.Windows.WINDOWPLACEMENT;
begin
wp.length := SizeOf(Winapi.Windows.WINDOWPLACEMENT);
Winapi.Windows.GetWindowPlacement(h, @wp);
Result := wp.showCmd = Winapi.Windows.SW_SHOWMINIMIZED;
end;
2.
// Alternative (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-isiconic):
Winapi.Windows.IsIconic(h);
两种选择中哪一种更可取?或者它们在所有情况下都同样出色?
'best' 备选方案正在调用
(GetWindowLong(hwnd, GWL_STYLE) & WS_MINIMIZE)
.
我检查了反汇编程序中的 IsIconic 和 GetWindowPlacement 函数,并且都在内部将 windows 样式与 WS_MINIMIZE 标志以确定 window 是否被最小化。
IsIconic()
是检查 window 是否最小化的 正确且有记录的 方法:
Determines whether the specified window is minimized (iconic).
The
IsZoomed
andIsIconic
functions determine whether a given window is maximized or minimized, respectively. TheGetWindowPlacement
function retrieves the minimized, maximized, and restored positions for the window, and also determines the window's show state.
使用其他任何东西充其量只是一种技巧。 IsIconic()
和 GetWindowPlacement()
在内部检查 WS_MINIMIZE
window 样式的 HWND 只是一个 实现细节 。使用这些函数而不是手动检查 window 样式的开销可以忽略不计。
坚持使用 IsIconic()
,它是 Microsoft 专门为此目的提供的 API。