用MFC做界面时,如何实现一个按钮按一下是打开,再按下是关闭,这里文字如何切换,怎样加变量啊

anhaoaihai 2011-03-27 02:31:43
如题
...全文
607 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2011-03-27
  • 打赏
  • 举报
回复
void CTestDlg::OnButton1() //即m_btStop的消息响应
{
// TODO: Add your control notification handler code here
static int sw=0;
if(sw==0)
{
m_btStop.SetWindowText("Start");
}
else
{
m_btStop.SetWindowText("Stop");
}
sw++;
sw %=2;
}
anhaoaihai 2011-03-27
  • 打赏
  • 举报
回复
还是要感谢你
CppCoder 2011-03-27
  • 打赏
  • 举报
回复
Sorry,
::PostMessage/::SendMessage(按钮控件的句柄, WM_SETTEXT, NULL, "需要显示的文字");
只能用SendMessage
CppCoder 2011-03-27
  • 打赏
  • 举报
回复
得到当前按钮状态
根据状态设置文字(楼上好多方法,我再加一种)
::PostMessage/::SendMessage(按钮控件的句柄, WM_SETTEXT, NULL, "需要显示的文字");
设置按钮状态

把上述过程放在按钮按下消息处理中

schlafenhamster 2011-03-27
  • 打赏
  • 举报
回复
这个是按钮,你关联一个变量就可以了:m_btStop.SetWindowText("Stop");
只是例子你不需要:SetTimer(1,100,NULL);
qq614190370 2011-03-27
  • 打赏
  • 举报
回复
。。。。。。。。。。KillTimer(1);没建立就失败,微软的函数比你想象的稳定的多
anhaoaihai 2011-03-27
  • 打赏
  • 举报
回复
小弟我初学MFC 不是很了解m_btStop.SetWindowText的调用位置 ,劳烦您帮我解释下,还有TIMER我还没建立,上面的 KillTimer(1);
SetTimer(1,100,NULL);
能运行吗
vvvoid 2011-03-27
  • 打赏
  • 举报
回复
我推荐4楼的方式
schlafenhamster 2011-03-27
  • 打赏
  • 举报
回复

void CTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
static int sw=0;
if(sw==0)
{
m_btStop.SetWindowText("Start");
KillTimer(1);
}
else
{
m_btStop.SetWindowText("Stop");
SetTimer(1,100,NULL);
}
sw++;
sw %=2;
}

邓学彬 2011-03-27
  • 打赏
  • 举报
回复
补充:
先关联一个CButton类型的变量m_Btn到按钮控件上。
取标题:
CString str;
m_Btn.GetWindowText(str);
置标题:
m_Btn.SetWindowText("新标题");

方法2:不关联变量
使用CDialog的成员函数或API:GetDlgItemText 、 SetDlgItemText
Dreadnought 2011-03-27
  • 打赏
  • 举报
回复
按钮按下之后用GetWindowText获取按钮文字,如果是打开用SetWindowText设置成关闭,反正亦然
邓学彬 2011-03-27
  • 打赏
  • 举报
回复
伪代码:
void 按钮被点击事件()
{
if(按钮.标题=“打开”){
执行“打开”的操作.....
按钮.标题=“关闭”
}else{
执行“关闭”的操作.....
按钮.标题=“打开”
}
}

15,979

社区成员

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

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