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的客户区,怎么初始化?真心求教各位 展开
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的客户区,怎么初始化?真心求教各位 展开
3个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询