以下是我的代码
我想要的效果是分割为上下两个视图,比例按照上8下2,并且窗口发生变化时还是按照这个比例
//创建
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext)
{
CRect rect;
GetClientRect(&rect);
int w = rect.Width();
int h = rect.Height();
if (!m_wndSplitter.CreateStatic(this, 2, 1))
return FALSE;
//创建视图并给它分配大小
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CDrawView), CSize(rect.Width(), rect.Height()*8/10), pContext);
m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CInfoView), CSize(rect.Width(), rect.Height()*2/10), pContext);
m_bIsSplitterCreate = TRUE; //创建成功
return TRUE;
}
//重新指定大小
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWndEx::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
CRect rect;
GetClientRect(&rect);
if (m_bIsSplitterCreate)
{
CRect rect; GetWindowRect(&rect);
int nHeight = rect.Height() - 80;
m_wndSplitter.SetRowInfo(0, nHeight, 10);
m_wndSplitter.SetRowInfo(1, 80, 80);
m_wndSplitter.RecalcLayout();
}
}
MFC分割窗口后不能正确显示尺寸问题,OnSize里面我也重新指定了,求大神解决
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- jid_223 2021-08-08 11:59关注
如下,要注释掉OnCreate里创建视图的代码,因创建的这个视图把分窗给庶住了
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;// 创建一个视图以占用框架的工作区 //if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL)) //{ // LOG_ERROR("未能创建视图窗口"); // return -1; //}
解决 1无用
悬赏问题
- ¥15 可以实现这个有不同背景颜色的九九乘法表吗?
- ¥50 python写segy数据时出错2
- ¥20 关于R studio 做精确稳定检验的问题!(语言-r语言)
- ¥50 用贝叶斯决策方法,设计CAD程序
- ¥20 关于#目标检测#的问题:(qq收集表到时间才能填写,填写的份数有上限)
- ¥50 ZYNQ7020双核FLAHS烧写的问题
- ¥20 ue 5 中想要实现第一人称人物左右行走摆动的效果,摄像头只向右摆动一次(关键词-结点)
- ¥15 AD9164瞬时带宽1.8G,怎么计算出来?
- ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除? HKEY_CLASSES_ROOT*\shellex\ContextMenuHandlers 没用
- ¥15 服务器安装php5.6版本