怎么使CButton随文本长度自动变化

sb3day sb3day 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
BOOL CMyButton::SetWindowText2(CString &str)
{
if(b_First)
{
CRect rect;
GetWindowRect(&rect);
GetParent()->ScreenToClient(rect);
TRACE("i_top=%d\n",rect.top);
i_left=rect.left;
i_top=rect.top;
i_right=rect.left+str.GetLength()*7;
i_Height=rect.Height();
b_First=0;
}
i_right=i_left+str.GetLength()*7;
SetWindowText(str);
MoveWindow(i_left,i_top,str.GetLength()*7,i_Height,1);
return 1;
}
我是这样做:MoveWindow里宽度str.GetLength()*7,设成文本长度的7倍,但这样遇到有英文的时候就不精确了;
还有:怎么让鼠标经过按钮的时候按钮颜色变成黄色的?我这样做达不到效果
void CMyButton::OnMouseMove(UINT nFlags, CPoint point) 
{
::SetBkColor(::CreateCompatibleDC(NULL),RGB(255,128,0));
// b_MouseIn=1;
CButton::OnMouseMove(nFlags, point);
}
LRESULT CMyButton::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
::SetBkColor(::CreateCompatibleDC(NULL),RGB(255,255,255));
//b_MouseIn=0;
return 0;
}
...全文

相关推荐

VC各类简单控件使用示例

CComboBox类支持添加、删除选项,切换下拉列表显示,以及处理选择变化事件。在描述中提到,这个示例适合初学者熟悉简单的界面编程。

lsldd

MFC控件全解析:从标准控件到高级应用与实战技巧

本文系统梳理MFC控件体系,涵盖标准控件(CButton、CEdit等)、公共控件(CListCtrl、CTreeCtrl、CTabCtrl等)及自定义控件;详解静态/动态创建方式、DDX/DDV数据交换、消息映射与子类化机制;重点解析CListCtrl虚拟列表、CTreeCtrl节点管理、Tab控件页内容组织;并提供高DPI适配、多线程UI更新、闪烁抑制、内存泄漏规避等关键实战技巧。

Vincent8080

MFC控件开发实战:从基础原理到高级应用与避坑指南

本文系统讲解MFC控件开发的核心技术,涵盖基础控件(CStatic、CButton、CEdit)与高级控件(CListBox、CComboBox、CListCtrl、CTreeCtrl)的使用要点;深入DDX/DDV数据交换机制、动态控件创建及Windows消息处理;重点剖析多线程UI更新、闪烁优化、高DPI布局适配和控件自绘等实战避坑方案,聚焦Windows GUI编程底层原理与C++桌面开发稳定性需求。

weixin_30613727

MFC对话框定时器刷新CListBox列表框完整实现指南

本文详细讲解在MFC对话框程序中使用SetTimer启动定时器,并在WM_TIMER消息处理函数中动态更新CListBox列表内容的完整流程。涵盖控件变量关联、定时器启停、列表长度控制、UI线程安全刷新、性能优化及常见问题排查,适用于日志监控、串口调试、工控上位机等实时数据展示场景。

weixin_34327761

一个典型的MFC应用例子

CEdit类允许用户在应用程序中输入和编辑文本,提供了诸如设置文本、获取文本、限制输入长度等方法。"按钮响应"涉及到CButton类。在MFC中,按钮和其他控件一样,有自己的消息映射机制。

bjtuwayne
评论 12
收藏 已收藏
分享
返回顶部
sb3day
界面 15,976 成员 115,866 内容