在VC6中用MFC做了一个对话框,
这个对话框用于显示进度变化,
也就是说,这个对话框在Timer里做了一些操作
而这些操作有些是需要一些时间的,也就意味着这个对话框在某些时间无法响应事件...在所有操作没有完成之前, 我是把右上角的close button, 也就是那个红X给disable的但是现在遇到一个问题,
在对话框无法响应的时间点击或者拖动对话框, 那个X会enable起来一会,反应过来后会再disable,
而且在enable的时候, 是可以真的关掉对话框的用VS 2008编译, 没有发现这个问题,
有兄弟碰到过此问题吗, 可否解决?谢谢

解决方案 »

  1.   

    也许你某个地方代码又把它enable了,例如:你timer如果做状态翻转,可能上次没完成,下次timer又到,就又enable了如果找不到enable的真正原因你是不可能解决的,所有的解决方法都依赖于你知道什么时候窗口应该禁止这个
      

  2.   


    恩,理论上是这样子的
    我的timer事件其实只会执行一次,
    代码中没有去enable这个X的而且同样的代码, 我用visual studio 2008来编译就不会出现这个现象我在想, 这会不会是VC6的MFC 库的一个bug,
    我是MFC新手, 对这个对话框的重绘过程不是很懂的
      

  3.   

    你在Timer的过程中直接屏蔽Close消息不也可以吗,等进度完成后再取消屏蔽消息
      

  4.   

    这样的话, X还是会被disable的在这过程中,
    只是不会被关掉吧
      

  5.   

    其实是这样的
    标题栏实际上是操作系统接管的
    当你的程序无响应是操作系统会让用户有一种关闭程序的途径
    所以你的关闭按钮会被启用
    而当你的程序有相应了自然就按你自己的方式处理了
    这样做的好处是用户不会因为程序的down掉而无法关闭
    所以你应该改变处理机制
    不过以上只是个人猜测
    没有理论支持
    仅供参考
      

  6.   


    恩, 有可能这种情形
    那我就另起一个线程了...
    顺便问一个问题, 我一个dialog里有2个button,
    打算加上hotkey, 也就是在首字母前加&发现一个问题, 下划线不会显示,
    当按下ALT键后, 下划线会显示出来,请问能否一直让下划线显示呢?