永发信息网

如何在单文档中实现分割窗口功能

答案:1  悬赏:20  手机版
解决时间 2021-12-30 12:29
  • 提问者网友:自食苦果
  • 2021-12-29 15:21
如何在单文档中实现分割窗口功能
最佳答案
  • 五星知识达人网友:神的生死簿
  • 2022-01-06 12:02
1.MainFrame.hprotected: CSplitterWnd m_wndSplitterTotal; //用于总体切割 CSplitterWnd m_wndSplitterRight; //用于右侧切割 BOOL m_bSplitterCreated; // 是否已经分割窗口 2. MainFrame.cpp:BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT , CCreateContext* pContext){ // 创建一个静态分栏窗口,分为一行两列 if ( m_wndSplitterTotal.CreateStatic(this, 1, 2) == NULL ) { return FALSE; } // 将CLandOwnerView类连接到总分栏对象的0行0列 m_wndSplitterTotal.CreateView(0, 0, RUNTIME_CLASS(CLandOwnerView), CSize(700, 700), pContext); if ( m_wndSplitterRight.CreateStatic(&m_wndSplitterTotal, 2, 1, WS_CHILD | WS_VISIBLE, m_wndSplitterTotal.IdFromRowCol(0, 1) ) == NULL ) { return FALSE; } // 将CRightUpView类连接到右边分栏对象的0行0列 m_wndSplitterRight.CreateView(0, 0, RUNTIME_CLASS(CRightUpView), CSize(100, 200), pContext); // 将CRightDownView类连接到右边分栏对象的1行0列 m_wndSplitterRight.CreateView(1, 0, RUNTIME_CLASS(CRightDownView), CSize(100, 200), pContext); // 设置窗格的初始化的大小 m_wndSplitterTotal.SetRowInfo(0, 100, 0); m_wndSplitterTotal.SetActivePane(0, 0, NULL); m_bSplitterCreated = TRUE; return TRUE; } 当窗口改变大小的时候,分割窗口也会去改变大小void CMainFrame::OnSize(UINT nType, int cx, int cy) { CFrameWnd::OnSize(nType, cx, cy); // TODO: Add your message handler code here CRect rect; GetWindowRect(&rect); // 如果窗口被分割,而且程序没有最小化 if ( m_bSplitterCreated && nType != SIZE_MINIMIZED ) { m_wndSplitterTotal.SetColumnInfo(0, rect.Width() - 250, 10); m_wndSplitterTotal.SetColumnInfo(1, 250, 10); m_wndSplitterTotal.RecalcLayout(); m_wndSplitterRight.SetRowInfo(0, rect.Height() / 2, 10); m_wndSplitterRight.SetRowInfo(0, rect.Height() / 2, 10); m_wndSplitterRight.RecalcLayout(); }}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯