怎么使CButton随文本长度自动变化
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类支持添加、删除选项,切换下拉列表显示,以及处理选择变化事件。在描述中提到,这个示例适合初学者熟悉简单的界面编程。
MFC控件全解析:从标准控件到高级应用与实战技巧
本文系统梳理MFC控件体系,涵盖标准控件(CButton、CEdit等)、公共控件(CListCtrl、CTreeCtrl、CTabCtrl等)及自定义控件;详解静态/动态创建方式、DDX/DDV数据交换、消息映射与子类化机制;重点解析CListCtrl虚拟列表、CTreeCtrl节点管理、Tab控件页内容组织;并提供高DPI适配、多线程UI更新、闪烁抑制、内存泄漏规避等关键实战技巧。
MFC控件开发实战:从基础原理到高级应用与避坑指南
本文系统讲解MFC控件开发的核心技术,涵盖基础控件(CStatic、CButton、CEdit)与高级控件(CListBox、CComboBox、CListCtrl、CTreeCtrl)的使用要点;深入DDX/DDV数据交换机制、动态控件创建及Windows消息处理;重点剖析多线程UI更新、闪烁优化、高DPI布局适配和控件自绘等实战避坑方案,聚焦Windows GUI编程底层原理与C++桌面开发稳定性需求。
MFC对话框定时器刷新CListBox列表框完整实现指南
本文详细讲解在MFC对话框程序中使用SetTimer启动定时器,并在WM_TIMER消息处理函数中动态更新CListBox列表内容的完整流程。涵盖控件变量关联、定时器启停、列表长度控制、UI线程安全刷新、性能优化及常见问题排查,适用于日志监控、串口调试、工控上位机等实时数据展示场景。
一个典型的MFC应用例子
CEdit类允许用户在应用程序中输入和编辑文本,提供了诸如设置文本、获取文本、限制输入长度等方法。"按钮响应"涉及到CButton类。在MFC中,按钮和其他控件一样,有自己的消息映射机制。


界面
