关于工具栏的一个问题?

archills 2001-05-08 08:45:00
我的工具栏上有两个按钮,一个是“运行”,一个是“停止”。
程序一开始“运行”是可以按下的,“停止”是灰化的。
当按下“运行”时程序就运行CMyView::OnRunStart
但是这个程序运行的时间很长,这是我希望根据一个run(BOOL)的变量来
使工具栏的“运行”按钮灰化,而使“停止”亮起来。


...全文
172 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
mountlin 2001-05-09
  • 打赏
  • 举报
回复
说错了,应该是snakelzh的意思……:)
mountlin 2001-05-09
  • 打赏
  • 举报
回复
我想archills的意思是说在你按下run后立即手动使按钮变灰,在开时运行,这也是可行的。如果你的运行过程很长,且不处里消息,那建议你用多线程。否则,就在你运行过程中(如循环中)加入消息处理,这样就可以更新菜单状态,而且,长时间不处里消息也是一件比较危险的事,至少让用户觉得似乎是程序没有响应了。加入消息处理用:
MSG msg;
//以下最好放在循环体中
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
archills 2001-05-09
  • 打赏
  • 举报
回复
我的循环里面已经加入了
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
菜单的确是可以更新的,但是工具栏总是不能更新。
archills 2001-05-08
  • 打赏
  • 举报
回复
谢谢你!不过我现在不在实验室.真想马上就试一下!
multiplex 2001-05-08
  • 打赏
  • 举报
回复
不行啊
void CTestView::OnStart()
{
// TODO: Add your command handler code here
for(long i=0;i<1000000000;i++)
{
if(i==10)
SendMessage(WM_COMMAND,ID_START_MESSAGE);
}
}
void CTestView::OnMessage()
{
isGray=true;
}
void CTestView::OnUpdateStop(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(!isGray);
}
我建议你用多线程

archills 2001-05-08
  • 打赏
  • 举报
回复
那自定义消息怎么样?
可以实现我的功能吗?
multiplex 2001-05-08
  • 打赏
  • 举报
回复
对不起,我试了一下,好像也不行,你可以用多线程试试
archills 2001-05-08
  • 打赏
  • 举报
回复
SendMessage可以实现我的功能吗?
archills 2001-05-08
  • 打赏
  • 举报
回复
说的不是很详细,你能不能告诉我什么书上有呀?
multiplex 2001-05-08
  • 打赏
  • 举报
回复
采用自定义消息,再添加OnYourMessage(),使变灰

archills 2001-05-08
  • 打赏
  • 举报
回复
运行前我为什么要灰化呀?
我要用它来启动CMyView::OnRunStart的
如果一开始就灰化我要它干什么呢?
snakelzh 2001-05-08
  • 打赏
  • 举报
回复
其实如mountlin所说的那样也行!
archills 2001-05-08
  • 打赏
  • 举报
回复
可以send指定的消息吗?
snakelzh 2001-05-08
  • 打赏
  • 举报
回复
哈,你在运行前把“运行”按钮灰化,而使“停止”亮起来不就行了,何必在运行时来干,
如果你一定要这样干的话就干脆设个定时器来干算了!
multiplex 2001-05-08
  • 打赏
  • 举报
回复
试试SendMessage
archills 2001-05-08
  • 打赏
  • 举报
回复
这个我已经编了,但是在CMyView::OnRunStart运行时,它是不会
更新的.我希望不要在CMyView::OnRunStart结束了再来更新工具栏.
而要在CMyView::OnRunStart运行过程中只要run一改变
就使工具栏变化.
mountlin 2001-05-08
  • 打赏
  • 举报
回复
ON_UPDATE_COMMAND_UI,看看MSDN

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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