CSplitterWnd多次切分窗口的问题,请教大侠。。

ruibipiglet 2011-04-14 05:13:52
CMainFrame::OnCreateClient中使用两个CSplitterWnd变量完成窗口切分。

m_wndSplitter先将客户区切分为两列,左右各占一半。

然后再用m_wndSplitter_new将左边的一半切分为两行。

至此,有1(左上),2(左下),3(右边)。

遇到的问题是程序启动后,3号窗口没有占据一半区域 貌似占据了整个客户区,需要将m_wndSplitter控件向右拖动,左边的连个1,2号窗口才能显示出来。

我的目的是程序启动后,就按照我设置的大小,1和2号各种四分之一,合起来占据客户区一半(左边),3号窗口占据客户区一半(右边)。


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
if(!m_wndSplitter.CreateStatic(this, 1, 2))
{
return FALSE;
}

CRect rect;
GetClientRect(&rect);


if(!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CStudentView),
CSize(rect.Width() / 2, rect.Height()), pContext))
{
return FALSE;
}

if (!(m_wndSplitter_new.CreateStatic(&m_wndSplitter,
2, 1, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 0))))
{
return FALSE;
}

if(!m_wndSplitter_new.CreateView(0, 0, RUNTIME_CLASS(CTeacherView),
CSize(rect.Width() / 2, rect.Height() / 2), pContext)
|| !m_wndSplitter_new.CreateView(1, 0, RUNTIME_CLASS(CContentView),
CSize(rect.Width() / 2 , rect.Height() / 2), pContext))
{
return FALSE;
}

return TRUE;
}

...全文
144 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin152 2011-04-14
  • 打赏
  • 举报
回复

CSplitterWnd::SetColumnInfo
CSplitterWnd::RecalcLayout

panasonic0804 2011-04-14
  • 打赏
  • 举报
回复
因为你没有显示设置列的信息,而系统采用了autosize,所以你的1、2几乎看不到,3占据了大部分区域。

可以使用SetColumnInfo来调整你的列的宽度。
例如

m_wndSplitter.SetColumnInfo(0,330,10)
Eleven 2011-04-14
  • 打赏
  • 举报
回复
响应主框架窗口WM_SIZE消息,在OnSize消息里利用CSplitterWnd::SetColumnInfo/SetRowInfo()来设置区域的大小,然后调用CSplitterWnd::RecalcLayout()来刷新,当然你在SetColumnInfo/SetRowInfo之前需要判断一下CSplitterWnd是否拆分完成。可以在CMainFrame类中定义个BOOL标记,初始值为FALSE,在OnCreateClient()函数中最后return TRUE;之前设置该标记值为TRUE。OnSize中判断该标记值,然后再调用上面提到的函数。
打开链接下载源码: https://pan.quark.cn/s/d85aa9a28238 FreeRTOS,其全称为“Free Real-Time Operating System”,是一款具备开源特质且设计轻巧的实时操作系统(RTOS),主要应用于嵌入式系统领域。该“freertos工程文件以及官方文档.rar”压缩包内含了与FreeRTOS关联的工程文件、官方文档资料以及其他用于移植的文件,是进行FreeRTOS学习与应用的关键性资源。 FreeRTOS的核心特质涵盖任务调度机制、中断处理功能、同步机制设计以及内存管理策略。其中,任务调度机制是其核心功能,借助优先级抢占式调度算法,保障高优先级任务能够获得及时响应。中断处理功能是嵌入式系统中的关键环节,FreeRTOS支持在中断执行环境中开展特定操作,同时确保任务执行状态的安全。同步机制例如信号量、互斥量及事件标志组,主要用于实现任务之间的通信与协调。内存管理部分则负责动态分配和释放内存资源,以满足不同任务的特定需求。 工程文件通常由源代码、配置文件、编译脚本等构成,能够帮助开发者深入理解FreeRTOS的工作原理,并在此基础上进行定制化开发。例如,`FreeRTOSConfig.h`作为FreeRTOS的核心配置文件,允许用户依据目标硬件条件和应用需求调整内核参数,比如任务数量、堆大小等。 官方文档资料是学习FreeRTOS的重要参考资料,其内容详尽地阐述了系统架构、API函数、应用示例等关键信息。通过研读这些文档,开发者可以掌握如何创建任务、配置中断、实现任务间的同步与通信,以及如何对FreeRTOS系统进行调试和优化。 移植文件主要涉及将FreeRTOS部署于不同的微控制器(MCU)或硬件平台之上。每个平...

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧