如何设置EditCtrl的透明??

alphagx 2003-11-27 11:05:55
我的对话框上放了一张图片,
然后我重载了CEdit,
并在CMyEdit的
OnCtrlColor中进行了如下的处理:
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH) GetStockObject(NULL_BRUSH);

但是主窗口上显示的文本框并没有透明。
即没有看到背景图片。

我的Edit是Read only属性的,难道用这种方法不行吗?

开发环境是vc 6.0 sp5。

...全文
156 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphagx 2003-11-28
  • 打赏
  • 举报
回复
TO: flyelf(空谷清音)
你能给我发一个demo吗?

Email:
gx_sz@163.com
flyelf 2003-11-28
  • 打赏
  • 举报
回复
.net不太清楚,不过在我的程序中可以实现透明效果
alphagx 2003-11-28
  • 打赏
  • 举报
回复
huanyun(无妻徒刑) ( )
说的是哪一篇文章?

其他几种方法都不行。
朋友用vc.net实现了一下,能实现要求。

zhucde 2003-11-28
  • 打赏
  • 举报
回复
可以的,我试过了,用如下代码看看:
添加对话框背景图片:
先在类中定义:
CBrush m_brBk;

初始化:(OnInitDialog)
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
m_brBk.CreatePatternBrush(&bmp);
bmp.DeleteObject();

重载WM_CTRLCOLOR


HBRUSH CMyView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CRecordView::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
int nID = pWnd->GetDlgCtrlID();

if( (nID == IDC_EDIT1))//你的文本框的ID
{
pDC->SetTextColor(RGB(140,0,0));
pDC->SetBkMode(TRANSPARENT);//透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));

}


if (pWnd == this)
{
return m_brBk;//设置背景图片
}

return hbr;
}


我试过了,是可以实现文本框的透明的,可以看到背景图片.

-------------
May You Secceed!
----------------------

sinhighly 2003-11-28
  • 打赏
  • 举报
回复
应该是重载ON_WM_CTLCOLOR_REFLECT消息
HBRUSH CTransParentEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
//set background transparent
pDC->SetBkMode(TRANSPARENT);
//return NULL brush
// return((HBRUSH)GetStockObject(NULL_BRUSH));
}

然后还要处理用户编辑选中等操作自己刷新窗口
flyelf 2003-11-28
  • 打赏
  • 举报
回复
void CMyEdit::UpdateCtrl()
{
CWnd* pParent = GetParent();
CRect rect;

GetWindowRect(rect);
pParent->ScreenToClient(rect);

pParent->InvalidateRect(rect, TRUE);
}
然后添加WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_KILLFOCUS,WM_LBUTTONDOWN,WM_LBUTTONDBLCLK等消息,在响应函数中添加代码UpdateCtrl();
alphagx 2003-11-28
  • 打赏
  • 举报
回复
解决问题了

只需要将Edit控件的属性更改成
MultiLine ,上面的方法就都可以了。

否则,当然文本所在的这一行的背景颜色将不会透明。

谢谢大家
flyelf 2003-11-28
  • 打赏
  • 举报
回复
已发送
huanyun 2003-11-27
  • 打赏
  • 举报
回复
http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=311

需要自己维护WM_PAINT
内容概要:本文聚焦于“基于中间电容应力分担机制的三阶立方体双向DC-DC变换器”的建模与优化设计,系统阐述其在dq域下的动态建模方法与控制策略优化,涵盖变频与移相协同控制、高电压增益实现、降频软启动、多模式平滑切换等核心技术。结合Matlab、Simulink及PSCAD仿真平台,深入实现全桥LLC、双三相LLC等谐振变换器的混合控制与动态响应分析,并拓展至飞轮储能系统、混合储能平抑风电波动、直流母线电压稳定控制等实际应用场景,构建了从器件级建模到系统级集成的完整仿真体系。同时包含多项高水平期刊论文的复现内容,强化科研可重复性与工程实用性。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员及从事新能源发电、储能系统、电动汽车、智能电网等领域研发的工程技术人员;具备电路拓扑分析、控制系统设计及仿真基础者更佳。; 使用场景及目标:①掌握高频双向DC-DC变换器的精确建模与先进控制方法;②复现并验证权威期刊论文中的关键仿真案例,提升科研创新能力与仿真技术水平;③应用于储能系统能量管理、新能源并网调控、电动汽车充放电模块等高性能电源变换系统的优化设计与动态性能分析。; 阅读建议:建议按照文档目录结构循序渐进学习,优先理解主拓扑的工作原理与控制逻辑,结合所提供的仿真模型进行实操复现,重点关注不同工况下的动态响应、稳定性边界及模式切换过程,深化对电力电子系统协同控制与多时间尺度动态特性的理解。
内容概要:本文系统研究了基于序贯蒙特卡洛模拟法的配电网可靠性评估方法,并通过Matlab代码实现了算法的仿真与复现。文章深入阐述了该方法在电力系统可靠性分析中的理论基础,通过模拟电力元件的故障与修复过程的时间序列,对配电网的关键可靠性指标(如系统平均停电频率SAIFI、平均停电持续时间SAIDI等)进行精确统计评估。研究结合IEEE标准测试系统,详细展示了状态转移抽样、时序仿真流程设计及可靠性指标计算等关键技术环节的实现方法。该方法能够有效处理复杂配电网络中元件的随机性、相关性与时序特性,为电网的规划、运行维护及风险评估提供了科学、可靠的决策依据。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事电力系统可靠性分析的工程技术人员。; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在配电网可靠性评估中的应用原理与实现技巧;②学习如何通过时序仿真评估SAIFI、SAIDI等核心可靠性指标;③为电网规划、故障风险分析和运维策略制定提供量化分析工具; 阅读建议:此资源以Matlab代码为核心载体,强调理论与实践的紧密结合,建议读者在学习过程中仔细研读算法原理,动手运行并调试所提供的代码,深入理解状态抽样、时序推进和指标统计的每一个细节,以达到融会贯通的目的。

15,976

社区成员

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

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