MFC控制条窗口布局原理(上)

MFC 窗口分割功能深入源码解析 类位于MFC(Microsoft Foundation Classes)库中,它用于创建和管理可分割的窗口。继承自CWnd类,这意味着它拥有窗口的大部分基本功能。但类还有一些特殊的功能,专门用于处理分割窗口的行为。在继承层次中,通过CWnd间接继承自CObject,这是所有MFC类的根类。CObject提供了序列化、诊断、运行时类型信息等基础服务,使得类能够执行一些更高级的操作。 阅读详情
 
MFC 控制条窗口布局原理
——by Koote Bi@fudan cse
一、框架窗口
让我们先从框架窗口开始。当框架窗口改变大小时会收到 WM_SIZE 消息, CFrameWnd::OnSize负责处理此消息 ,该函数调用 RecalcLayout 来重新安置各子窗口,它的主体代码如下:
if(GetStyle() & FWS_SNAPTOBARS)
{
CRect rect(0, 0, 32767, 32767);
RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &rect, &rect, FALSE);
RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposExtra, &m_rectBorder, &rect, TRUE);
CalcWindowRect(&rect);
SetWindowPos(NULL,0,0,rect.Width(),rect.Height(),SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER);
}
else
{
        RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposExtra, &m_rectBorder);
}
这里有两个小的地方要注意,第一是 FWS_SNAPTOBARS 风格。一般来说,都是框架窗口主动改变大小,子窗口随之要修改自己来适应框架窗口的改变,但是这个 FWS_SNAPTOBARS 风格却相反,是让框架窗口改变大小来适应它的子窗口, 这个风格是为 CMiniDockFrameWnd 准备的,这个框架窗口的大小是根据它内部的控制条来定的;第二是要注意 RecalcLayout 是不可重入的, MFC 防止重入的方法虽然非常的简单有效,但是它的方法要不能防止多线程的重入 —— 话说回来 MFC 本身就不是一个线程安全的库。
好了现在我们进入了整个重布局动作的主体函数 RepositionBars (这个函数在 MSDN 里有文档记载,关于它的几个参数的含义就不在这里赘述了):
首先,它创建一个 AFX_SIZEPARE
MFC单文档界面窗口任意分割技术实战指南 是一个用于在 MFC 应用程序中创建分割窗口的类。分割窗口允许用户通过拖动分割条来调整各个子窗口的大小。MFC 提供了几个类,可以帮助我们快速实现窗口的分割功能,而正是实现这一功能的核心类。如果默认的分割窗口布局不能满足需求,可以通过继承类并重写相关函数来实现自定义的布局。例如:public:// 自定义创建视图的函数// 这里可以添加自定义的创建逻辑除了通用的窗口状态外,可能还需要保存一些自定义的状态信息。例如,用户在某个特定视图中的搜索条件、过滤设置或者特殊的布局安排等。 阅读详情

相关推荐

MFC界面自动布局demo

使用easysize精巧类实现MFC界面布局layout,easysize类中使用宏定义实现,使用方法非常简单容易,帮助你轻松实现MFC界面自动布局

MFC框架结构分析例程(CControlBar使用演示)

采用最简单的形式,演示了3种常用控制条的用法。<br> CDialogBar CToolBar CStatusBar

MFC 控件自动布局

完美实现MFC界面布局 内附源码、demo 并有详细注释

什么是深度展开网络?如何将迭代算法的每一次迭代展开成深度网络对应的一层?深度展开网络进行端对端训练,其中端对端是什么意思?

在深度学习和机器学习的背景下,“端到端”(End-to-end)训练指的是将输入数据直接映射到最终输出的过程,而不需要任何中间的手动数据预处理或特征工程。- **自然语言处理**:端到端自然语言处理系统可以将自然语言输入直接转化为计算机可理解的语言输出,而不需要对语言进行分解和转化。- **推荐系统**:通过使用深度神经网络,端到端推荐系统可以直接根据用户历史行为预测其未来的兴趣爱好,并推荐相应的产品或服务。4. **直接映射**:从输入到输出的直接映射,中间没有任何拆分或分解的过程。

m0_67897882的博客 5438

手把手教你调试eDP接口:Main Link信号异常、AUXCH通信失败怎么办?

本文提供了一份详尽的eDP接口调试实战指南,重点解决Main Link信号异常与AUXCH通信失败两大核心难题。文章系统介绍了从工具准备、信号完整性分析(眼图、抖动测量)到AUXCH协议解码、HPD信号检查的完整排查流程,并分享了链路训练诊断与常见避坑技巧,帮助硬件工程师高效定位并解决显示问题。

Jerry的专栏 832

使用 FastAPI 构建高性能异步接口服务(含完整项目示例)

python复制编辑python复制编辑= 1: raise HTTPException(status_code=404, detail="用户不存在")特性FastAPI 支持情况类型注解✅自动文档✅异步支持✅ORM 集成✅(推荐 SQLModel)性能✅ 极高FastAPI 是你构建现代化、高性能 Python Web 应用的首选框架!

2501_92823525的博客 1302

新手必看!Stata工具变量分析中的三大陷阱:如何正确解读LM统计量、CDW检验和Hansen J值

本文深度解析Stata工具变量分析中的三大核心检验:不可识别检验、弱IV检验和过度识别检验,帮助新手避开常见陷阱。详细解读LM统计量、CDW检验和Hansen J值的正确使用方法,提供实战案例和Stata操作指南,确保研究结论的可靠性。

weixin_29231027的博客 573

CESM笔记——CESM1.0-CESM1.2.2-CESM2.1.3三个版本模式工作流对比

最近测试了CESM1.0,CESM1.2.2和CESM2.1.3三个版本,不同版本在workflow上有一些区别,来做点笔记。 CESM1.0 测试compset:B_2000,F_2000 workflow: 1. create_newcase -case ~/CESM/cesm1_0/script/B_2000 -compset B_2000 -res f19_g16 -mach tianhe 2. cd B_2000 (optional) env_mach_pes.xml ##修改核数,

砍柴姑娘Jourosy的博客 4946

企业AI数据资产评估的自动化工具:AI应用架构师的使用指南

在AI驱动的企业数字化转型中,数据资产是支撑模型训练、业务决策的核心燃料。然而,80%的AI项目失败源于数据问题——低质量数据导致模型偏差、未评估的风险引发合规危机、价值不明确的数据浪费资源。手动数据资产评估效率低、易出错,无法满足规模化AI应用需求。本文将以AI应用架构师的视角,拆解企业数据资产评估的核心逻辑,用"餐厅选食材"的生活化比喻解释复杂概念,结合自动化工具的技术原理与实战案例,教你如何从0到1搭建数据资产评估体系。无论是数据质量检测、价值量化还是风险防控,你都能找到可落地的工具方案与实践步骤。

2502_91592937的博客 1629

基于四旋翼模型的火箭型无人机视线角保持控制仿真设计

本文针对火箭型无人机的视线角保持控制问题展开研究。基于四旋翼动力学模型,通过改造设计了一种摄像头朝上安装的特殊无人机系统,用于追踪空中目标。文章详细推导了坐标系定义、运动学和动力学方程,重点分析了摄像头安装与视线几何关系,建立了目标运动模型和视线向量计算方法。通过解算期望姿态角,实现了使机体Z轴始终对准目标的控制目标。仿真结果表明,该系统能有效完成视线角保持任务,为空对空监视等应用场景提供了可行方案。~~~~~

huanghm88的专栏 143

YOLOv11改进策略【卷积层】| arXiv 2025 YOLO-Master中的稀疏混合专家ES-MoE 动态路由提适配 + 稀疏激活降延迟,突破精度-效率权衡

ES-MoE(Efficient Sparse Mixture-of-Experts)是为解决传统YOLO类实时目标检测器的静态计算冗余问题而提出的稀疏混合专家模块。现有YOLO架构对所有输入场景采用统一的密集计算模式,导致简单场景资源浪费、复杂场景(如密集小目标、遮挡场景)计算不足,难以平衡检测精度与推理速度。ES-MoE引入实例条件自适应计算,通过动态路由机制为不同复杂度的输入分配差异化计算资源,突破传统静态架构的精度-效率权衡限制,同时适配实时检测的轻量化需求。

Limiiiing的博客 465

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 关于链接警告LNK4070
下一篇: sfilter流程浅析
会思考的草
博客等级 码龄25年 208粉丝 55原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值