如果判断一个CWnd的显示状态(显示或隐藏)

hping1016 2009-08-22 06:38:06
如题:我定义了一个 CStatic类型的对象,得到CStatic由CWnd派生而来。

如何得到该 CWnd 是显示还是隐藏状态?


从MSDN上查得一个函数,判断可能是用它获取显示状态,如下:

GetWindowPlacement
Retrieves the show state and the normal (restored), minimized, and maximized positions of a window.

函数原型:
//==========================================================================
CWnd::GetWindowPlacement
BOOL GetWindowPlacement( WINDOWPLACEMENT* lpwndpl ) const;

Return Value
Nonzero if the function is successful; otherwise 0.

查的 WINDOWPLACEMENT 的说明如下:
//======================================================================
The WINDOWPLACEMENT data structure has the following form:

typedef struct tagWINDOWPLACEMENT { /* wndpl */
UINT length;
UINT flags;
UINT showCmd;
POINT ptMinPosition;
POINT ptMaxPosition;
RECT rcNormalPosition;
} WINDOWPLACEMENT;

不用都拷贝过来了,请高手帮忙查看一下MSDN吧。
我认为结构体中的“showCmd”是说明显示状态的。其值可取

SW_HIDE
SW_MINIMIZE
SW_RESTORE
SW_SHOW
SW_SHOWMAXIMIZED
SW_SHOWMINIMIZED
SW_SHOWMINNOACTIVE
SW_SHOWNA
SW_SHOWNOACTIVATE
SW_SHOWNORMAL

为啥判断的时候,showCmd 总是 1?

...全文
434 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WaistCoat16 2009-08-22
  • 打赏
  • 举报
回复
那你Static调用ShowWindow(SW_HIDE)后再调用这个函数试试。
weiym 2009-08-22
  • 打赏
  • 举报
回复
BOOL bVisible = (GetWindowLong(hWnd, GWL_STYLE) & WS_VISIBLE);
weiym 2009-08-22
  • 打赏
  • 举报
回复
BOOL IsWindowVisible( HWND hWnd
);
hping1016 2009-08-22
  • 打赏
  • 举报
回复
自己顶一下

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧