重拾MFC小细节之设置静态文本前、背景色

      在大一时,学过MFC,不过那时刚接触编程,C/C++学完不久,跟重要的是没动手编程,后来又做ACM去了。现在大三了,各种实验课设老师都要求用VC可视化,于是借着机会学了点MFC皮毛,在此总结一些常用技巧,简直贻笑大方了!由于很多东西没有上升的理论层面,在此只能介绍下应用,方便学习交流,同时以备后面用到。

       首先谈谈设置静态文本前、背景色。我只用到了其中一种,在此列出。

        要使静态文本透明化,首先添加消息响应函数WM_CTLCOLOR。一般步骤为点击菜单栏“查看”,选择“建立类向导”,在相应对话框类中选择”WM_CTLCOLOR“,系统自动添加HBRUSH XXXX类::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 函数,然后在里面添加代码即可,如下:

1.此代码是不显示背景色的。

/***********************************************
*功能:改变对话框中静态文本的颜色对话框
*
************************************************/
HBRUSH MyLoginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	if(nCtlColor==CTLCOLOR_STATIC)
	{
		pDC->SetBkMode(TRANSPARENT);
		return HBRUSH(GetStockObject(HOLLOW_BRUSH));
	}
	return hbr;
}

 效果图如下:



2.此代码是显示背景色的。

/***********************************************
*功能:改变对话框中静态文本的颜色对话框
*
************************************************/
HBRUSH MyLoginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	return hbr;
}
效果图如下:


        注意在创建该对话框出即调用该类对话框DoModal()前添加语句SetDialogBkColor(RGB(100,200,100),RGB(0,0,255))设置静态文本的颜色。


       以上代码可能参照先驱博客,在此表示感谢!如有错误,欢迎大牛斧正!


### 基于分层抽象机的分层强化学习 #### 概念介绍 分层强化学习(Hierarchical Reinforcement Learning, HRL)旨在通过构建多级层次结构来处理复杂任务,从而提高解决问题的能力和效率。这种技术不仅有助于缓解传统单一层面模型面临的维度灾难问题,还促进了跨领域知识迁移的可能性[^2]。 在HRL框架内,“分层抽象机”特指一种特定类型的架构设计,它利用了不同级别的抽象来表征环境动态特性以及代理行为模式。该机制允许系统在一个较高的抽象级别做出决策,并将其细化为更具体的行动计划;与此同时,在较低水平上执行这些计划时可以再次应用类似的逻辑进一步细分直至达到最基础的操作单元为止[^4]。 #### 实现方法概述 对于基于分层抽象机的HRL而言,其实现有赖于以下几个核心组件: - **层次结构**:将整体目标任务细分为若干相互关联但又相对独立的小型子任务; - **时间扩展动作(Temporal Abstraction Actions)**:定义跨越较长时间跨度的行为序列作为单个复合动作,即所谓的“选项”,它们可以在任意时刻启动并持续至完成某个预设条件被满足之时; - **价值函数分解**:采用诸如MAXQ这样的算法对总回报进行拆解,以便更好地评估各阶段贡献度大小及优化路径选择策略[^1]。 此外,自动化的状态空间与动作集切分也是提升性能的关键因素之一。例如,可以通过聚类分析等手段识别出潜在的任务边界点,进而据此建立合理的层级关系图谱[^3]。 #### 研究进展举例 一项值得注意的研究成果来自于Dietterich提出的MAXQ方法论,此方案创造性地提出了针对非叶节点的价值函数表达方式——即将父项收益视作其所有直系后代累积折扣报酬之和的形式加以量化。这种方法有效地解决了以往仅能依靠末端反馈调整参数所带来的局限性,使得中间管理层同样具备自我改进的机会。 另一篇重要文献则探讨了如何借助Feudal Network实现端到端训练下的高效探索机制。在此基础上所搭建起来的学习网络能够自适应地调节各级别的奖励权重分布情况,确保全局最优解得以快速收敛的同时兼顾局部细节上的精准把控[^5]。 ```python import numpy as np class HierarchicalAgent: def __init__(self): self.high_level_policy = None # 高阶政策初始化 self.low_level_policies = [] # 多个低阶政策列表 def choose_option(self, state): # 根据当状态挑选合适的option pass def execute_primitive_action(self, action): # 执行最基本单位action pass agent = HierarchicalAgent() state = 'initial_state' chosen_option = agent.choose_option(state) if isinstance(chosen_option, str): # 如果选中的是primitive action,则直接执行 agent.execute_primitive_action(chosen_option) else: # 否则递归调用直到触及底层policy while not chosen_option.is_terminal(): sub_task_result = chosen_option.run_subtask(agent) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值