hur.cn - 华软网

 热门搜索

一个 设置 客户区大小 的困惑

  作者:未知    来源:网络    更新时间:2010/5/29
GameWnd::GameWnd ()
{
    Create (NULL, _T ("GameWnd"),
        WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION );

//
// Size the window.
//
    CRect rect (0, 0, 404, 404);
    CalcWindowRect (&rect);
CString string;
string.Format(TEXT("窗体宽度:%d,窗体高度:%d,边框宽:%d,边框长:%d,标题:%d"),
rect.Width(),rect.Height(),GetSystemMetrics(SM_CXFRAME),GetSystemMetrics(SM_CYFRAME),GetSystemMetrics(SM_CYCAPTION));
AfxMessageBox(string);//---------------------------------222222222222222


    SetWindowPos (NULL, 0, 0, rect.Width (), rect.Height (),
        SWP_NOZORDER | SWP_NOMOVE /*| SWP_NOREDRAW*/);
GetClientRect(&rect);
//GetWindowRect(&rect);
//CString string;
string.Format(TEXT("客户区宽度:%d,客户区高度:%d"),rect.Width(),rect.Height());
AfxMessageBox(string);//-----------------------------------11111111111111
}
在222222222222222处 弹出结果为  窗体宽度:410,窗体高度:432,边框宽:8,边框长:8,标题:22

在11111111111111处 弹出结果为 客户区宽度:400,客户区高度:400

大家 给解释 下 这个 400 400 如何得到??????????? 
---华软 网友回答---
你不是写着吗?

GetClientRect(&rect);
---华软网友回复---
SM_CXSIZEFRAME,SM_CYSIZEFRAME 围绕可改变大小的窗口的边框的厚度
SM_CXFRAME,SM_CYFRAME 等同于SM_CXSIZEFRAME and SM_CYSIZEFRAME
SM_CXEDGE,SM_CYEDGE 以像素值为单位的3D边框的宽度和高度
参数传递有问题吧!
---华软网友回复---
CRect clientrect;
GetClientRect(&clientrect);

//然后用clientrect.Width;和clientrect.Height;就可以得到了
---华软网友回复---
啊啊啊啊啊 解决了燃眉之急
---华软网友回复---
其实使用AdjustWindowRect和MoveWindow可以达到想要的效果      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。