一个SDI在创建的时候,就选择了"最大化"。
运行程序,可以看到整个框架打开后一下子撑满整个屏幕。然后对这个SDI进行了个静态的切分,想要得到左右大小相等的
两个部分:
所以添加有函数:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
CRect rc;
GetClientRect(&rc); CSize PaneSize(rc.Width()/2,rc.Height()); m_wndSplitter.CreateStatic(this,1,2); m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(MyLeftView),PaneSize,pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(MyRightView),PaneSize,pContext);
return TRUE;
}可是运行后发现,并不是左右大小相等的2个部分,左边小,右边大,左边仅有40%左右的宽度?这个为何?思量来,觉得可能是 CRect rc; GetClientRect(&rc);
的这个rc有问题,它可能刚一打开时的大小,所以才造成左边的小。可我的程序是在创建的时候就定义了最大化了,为什么rc不是取得全屏幕呢?要怎么改才行?
运行程序,可以看到整个框架打开后一下子撑满整个屏幕。然后对这个SDI进行了个静态的切分,想要得到左右大小相等的
两个部分:
所以添加有函数:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
CRect rc;
GetClientRect(&rc); CSize PaneSize(rc.Width()/2,rc.Height()); m_wndSplitter.CreateStatic(this,1,2); m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(MyLeftView),PaneSize,pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(MyRightView),PaneSize,pContext);
return TRUE;
}可是运行后发现,并不是左右大小相等的2个部分,左边小,右边大,左边仅有40%左右的宽度?这个为何?思量来,觉得可能是 CRect rc; GetClientRect(&rc);
的这个rc有问题,它可能刚一打开时的大小,所以才造成左边的小。可我的程序是在创建的时候就定义了最大化了,为什么rc不是取得全屏幕呢?要怎么改才行?
解决方案 »
- 程序运行转入后台了
- 难道是VC++的BUG?VC高手请进 急
- 重载ClistCtrl的OnItemChanged时碰到的问题
- ado如何用集成windows验证的方式登陆sql server,期待您的help!!
- 请问如何给treeview添加树枝和删除树枝?
- 自定义图象文件的显示
- 哪位大哥有winfx 的例子呀要C++的C#就不要了
- OpenGL 轨迹球问题
- 怎样在一个程序里启动和结束另外一个程序?又怎样判断一个应用程序已经运行?
- 为什么在debug中明明某个double类型变量a的值是123.4,而表达式a==123.4及a>=123.4都返回false?
- 在VC中用sql语句查找时间日期字段的语句怎么写?
- CReBar的简单问题
运行程序,可以看到整个框架打开后一下子撑满整个屏幕。然后对这个SDI进行了个静态的切分,想要得到左右大小相等的
两个部分:
所以添加有函数:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
CRect rc;
GetClientRect(&rc); CSize PaneSize(rc.Width()/2,rc.Height()); m_wndSplitter.CreateStatic(this,1,2); m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(MyLeftView),PaneSize,pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(MyRightView),PaneSize,pContext);
return TRUE;
}可是运行后发现,并不是左右大小相等的2个部分,左边小,右边大,左边仅有40%左右的宽度?这个为何?思量来,觉得可能是 CRect rc; GetClientRect(&rc);
的这个rc有问题,它可能刚一打开时的大小,所以才造成左边的小。可我的程序是在创建的时候就定义了最大化了,为什么rc不是取得全屏幕呢?要怎么改才行?
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
函数时还没有最大化。使用GetSystemMetrics(SM_CXSCREEN);获得屏幕大小来计算就准确些。
你说用:GetSystemMetrics(SM_CXSCREEN);
可它的返回值是BOOL值,又不是全屏的大小,我该怎么使用呢?
请指教。谢谢。
明明返回int型呀?你怎么就是返回BOOL了?