vc++窗口初始化大小的新手问题

刚学vc没多久,想建一个700*400大小的窗口,但是建立后出现了点偏差,不知道为什么,下面是我的部分代码。GameFrame::GameFrame(){Create(N... 刚学vc没多久,想建一个700*400大小的窗口,但是建立后出现了点偏差,不知道为什么,下面是我的部分代码。
GameFrame::GameFrame()
{
Create(NULL,"gamemap",WS_OVERLAPPEDWINDOW,CRect(0,0,700,400));
CClientDC dc(this);
int width = dc.GetDeviceCaps(HORZRES);
int height = dc.GetDeviceCaps(VERTRES);
RECT rect;
GetWindowRect(&rect);
width = (width-(rect.right-rect.left))/2;
height = (height-(rect.bottom-rect.top))/2;
MoveWindow(width,height,(rect.right-rect.left),(rect.bottom-rect.top),TRUE);

//省略其他初始化操作******
}
然后我就在比如OnPaint函数中画一条直线,坐标就是从(0,400)到(700,400),这样画条线,原则上应该在底部可以看的见,但是我一直往下拉伸窗口,拉了大概一指的距离才发现那条线。这是为什么?明明初始化了,700*400的窗口。后来我又去跟踪debug,GetWindowRect得出的结论是窗口的确700*400;而GetCClientRect得出的是688*368……这是什么原因造成的?有什么解决办法吗?帮帮我这新手,先谢谢各位高手了~~~~
注:GameFrame是继承自CFrameWnd类
如果真的是包含了边框和标题栏的话,那如果我想得到700*400的客户区,怎么初始化?真心求教各位
展开
 我来答
etiu2009
2010-08-03 · TA获得超过968个赞
知道小有建树答主
回答量:481
采纳率:0%
帮助的人:509万
展开全部
Create 函数的窗口大小是指整个窗口的大小,包括窗口标题和边框。

而 OnPaint 只能对客户区域(即扣除标题栏和边框的部分)进行绘制,如果要对整个窗口进行绘制,应该用 OnNcPaint,但这样的话,划的线会从窗口标题栏左上角一直划到窗口右下角。
warmwormn
2010-08-03 · TA获得超过737个赞
知道小有建树答主
回答量:1694
采纳率:0%
帮助的人:1339万
展开全部
getsystemmetrics 得到NCClient区域的尺寸
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱迷见存z292
2010-08-03 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:112万
展开全部
扣掉标题栏和窗口边框的高和宽,窗口里面的大小就是688*368
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式