编辑框状态设置问题

juicee 2007-07-30 02:48:41
在基于对话框的工程中,主对话框中有一个编辑框,并有个m_editXXX与之关联,但当我在主对话框类中的函数里用m_editXXX设置编辑框状态时发现会有问题
比如:
m_editXXX.EnableWindow(FALSE);
sleep(1000);
m_editXXX.EnableWindow(TRUE);
为什么编辑框一直没有显示被禁用的状态呢
如果把
m_editXXX.EnableWindow(TRUE);
注释掉
则编辑框将在sleep(1000);
之后显示被禁用状态
而把
sleep(1000);
m_editXXX.EnableWindow(TRUE);
都注释掉,编辑框马上会被禁用
还有就是我在主对话框中按钮被禁用时点击它,在按钮被启用后还是会响应之前的点击,这是为什么……请高手指点- -
...全文
264 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
juicee 2007-08-02
  • 打赏
  • 举报
回复
算了,就这样结了吧
saihikaro 2007-08-01
  • 打赏
  • 举报
回复
都是高人!
juicee 2007-07-31
  • 打赏
  • 举报
回复
多谢handsomerun,Mackz,ouyh12345(五岭散人)
现在问题是禁用按钮时点击了按钮,在重新启用之后竟然会响应之前禁用时的鼠标点击。搞不懂了- -还望赐教。
juicee 2007-07-31
  • 打赏
  • 举报
回复
大哥们,不要丢下偶啊……555555
菜牛 2007-07-30
  • 打赏
  • 举报
回复
m_editXXX.EnableWindow(FALSE);
SetTimer(10, 1000, NULL);
...


...OnTimer(...)
{
if (10 == nIDEvent)
{
m_editXXX.EnableWindow(TRUE);
KillTimer(10);
}
...
}

你禁止了窗口控件,当然不会响应鼠标消息。
juicee 2007-07-30
  • 打赏
  • 举报
回复
我这里Sleep只是模拟停顿,我用其它语句的时候也会这样
本来的语句是
m_staticStatus.SetWindowText("修改中...");
DWORD tStart = GetTickCount();
for (pRecord->MoveFirst();!pRecord->EndOfFile; pRecord->MoveNext())
{
strTmp =(LPTSTR)(_bstr_t)pRecord->GetCollect((_bstr_t)m_strValue);
strTmp.Replace(m_strSrc,m_strDest);
pRecord->PutCollect((_bstr_t)m_strValue,(_bstr_t)strTmp);
}
DWORD tEnd = GetTickCount();
CString strTime;
strTime.Format("%d",tEnd-tStart);
m_staticStatus.SetWindowText("修改成功......耗时"+strTime+"毫秒");
juicee 2007-07-30
  • 打赏
  • 举报
回复
确实是顺序执行的语句,定时器中修改编辑框具体什么意思呢,我是想在执行按钮响应这段时间禁止用户修改输入数据。
juicee 2007-07-30
  • 打赏
  • 举报
回复
还有就是最后的那个问题,怎么能让按钮在禁用一段时间后在启用的时候不响应禁用期间的鼠标点击?
菜牛 2007-07-30
  • 打赏
  • 举报
回复
你这是顺序执行的语句?也就是说在后面一句执行完以前,界面都不会更新,界面只反映最后修改的状态。
建议改成定时器中修改编辑框状态。Sleep对于本进程根本就是阻塞的。
juicee 2007-07-30
  • 打赏
  • 举报
回复
嗯,谢谢,UpdateWindow();确实可以,但是似乎每一个编辑框都要写一个,可不可以update整个主对话框呢。。就像Invalidate一样。
handsomerun 2007-07-30
  • 打赏
  • 举报
回复
UpdateWindow();
juicee 2007-07-30
  • 打赏
  • 举报
回复
还是不行:(
以前好像没碰到这样的问题- -
handsomerun 2007-07-30
  • 打赏
  • 举报
回复
m_editXXX.EnableWindow(FALSE);


加UpdateWindow();
ouyh12345 2007-07-30
  • 打赏
  • 举报
回复
在EnableWindow后添加m_editXXX.Invalidate()试试
juicee 2007-07-30
  • 打赏
  • 举报
回复
来人那。。。救命那。。。

15,978

社区成员

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

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