求助GetWindowRect、GetSystemMetrics、cpoint引发的问题
我建了个对话框,最大化显示。对话上面放了些控件
在OnSize里面求坐标
//获得活动屏幕的大小
int nWidth=GetSystemMetrics(SM_CXSCREEN); //屏幕宽度
int nHeight=GetSystemMetrics(SM_CYSCREEN); //屏幕高度
--------------
结果:nWidth=1024,nHeight=768,没错
但是当我
////获得活动窗口的大小
HWND hWnd =::GetActiveWindow();
CRect rect;
::GetWindowRect(hWnd,&rect);
int nWidth=rect.right -rect.left ;
int nHeight=rect.bottom -rect.top ;
--------------
结果:rect.left=-4,rect.right=1028,rect.top =-4,rect.bottom =738
怎么会出现这样的结果呢?活动窗口不就应该是屏幕减掉标题栏和任务栏的高度么?
鼠标单击的响应范围也是屏幕减掉标题栏和任务栏之间的区域吧?
[解决办法]
最大化时的窗口边框是在屏幕外的。所以这里会是负数
[解决办法]
rect.left=-4,rect.right=1028,rect.top =-4,rect.bottom =738
是desktop吧。
HWND hWnd =::GetActiveWindow();
不对。用不着。
应该直接用:
*this
[解决办法]
活动窗口是指拥有焦点的窗口(所在的主窗口,对于操作系统来说的,任何一时刻,系统中只有一个活动窗口),你说的那是窗口客户区。