当窗口最小化时,如何得到客户区的大小;Windows API中有这样的方法么?sh
GetWindowRect();//得到RECT里面全是负数GetClientRect();//得到RECT里面全是0这两个都不行...
GetWindowRect();//得到RECT里面全是负数 GetClientRect();//得到RECT里面全是0 这两个都不行
展开
1个回答
展开全部
窗口最小化后 GetWindowPlacement 只能获取到窗口的 RECT,不能获取客户区的。
WINDOWPLACEMENT wndpl;
wndpl.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hwnd, &wndpl);
// wndpl.rcNormalPosition.left;
// wndpl.rcNormalPosition.top;
// wndpl.rcNormalPosition.right;
// wndpl.rcNormalPosition.bottom;
MSDN 还说:
If the window is a top-level window that does not have the WS_EX_TOOLWINDOW window style, then the coordinates represented by the following members are in workspace coordinates: ptMinPosition, ptMaxPosition, and rcNormalPosition. Otherwise, these members are in screen coordinates.
如果窗口是没有 WS_EX_TOOLWINDOW 窗口样式的顶级窗口,(结构体 WINDOWPLACEMENT 的)以下成员代表的坐标为工作区坐标:ptMinPosition、ptMaxPosition 和 rcNormalPosition。否则,这些成员为屏幕坐标。
工作区坐标可能是指以除去任务栏之后的 RECT 为坐标。
WINDOWPLACEMENT wndpl;
wndpl.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hwnd, &wndpl);
// wndpl.rcNormalPosition.left;
// wndpl.rcNormalPosition.top;
// wndpl.rcNormalPosition.right;
// wndpl.rcNormalPosition.bottom;
MSDN 还说:
If the window is a top-level window that does not have the WS_EX_TOOLWINDOW window style, then the coordinates represented by the following members are in workspace coordinates: ptMinPosition, ptMaxPosition, and rcNormalPosition. Otherwise, these members are in screen coordinates.
如果窗口是没有 WS_EX_TOOLWINDOW 窗口样式的顶级窗口,(结构体 WINDOWPLACEMENT 的)以下成员代表的坐标为工作区坐标:ptMinPosition、ptMaxPosition 和 rcNormalPosition。否则,这些成员为屏幕坐标。
工作区坐标可能是指以除去任务栏之后的 RECT 为坐标。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询