我有一个对话框程序,在主界面上用了分割窗口,把主界面的一部分分成2半,一边是树控件,一边是个非模态对话框,非模态对话框上再放一些控件用于具体的操作,当在这个非模态对话框上操作的时候,由于非模态对话框取得了焦点,所以主界面没有焦点而导致标题栏是灰蓝色的,有没有办法在非模态对话框上操作的时候主界面保持焦点?由于非模态的原因还导致了一个刷新的问题,在非模态对话框上有个列表控件(CListCtrl),如果有另外一个程序比如计算器,盖住了列表控件的一部分,先点一下列表,再点一下主界面的标题栏,列表控件上刚才被盖住的部分会成一坨灰灰的,就像是计算器没了,但是留下了它的影子。请问怎么解决啊?如果不用非模态对话框能达到分割窗口的目的也行,不过我需要多层分割,就是分割的2部分的每一部分都要再分割,请兄弟们帮帮忙,谢谢!

解决方案 »

  1.   

    对,我用的网上那个CSsplitter类实现的分割,焦点的问题解决了,把非模态对话框的style设成child就行了。现在还有CListCtrl刷新的问题,我分析了一下,因为CSsplitter类是从CStatic继承的,所以点击列表的时候CStatic不会收到任何消息,具体还不知道原因,各位兄弟帮帮忙吧!
      

  2.   

    呵呵,是我描述的有点问题,我是说在非模态对话框上操作的时候,主窗口保持焦点,现在解决了,把非模态的style设成child就行了还有列表刷新的问题,各位兄弟帮忙啊!
      

  3.   

    有哪些消息会让CListCtrl重画,分别对应哪些部位的重画?
      

  4.   

    请问以下几种情况,CListCtrl分别会收到哪个消息
    1、被其他程序挡住
    2、被其他程序挡住后,其他程序移开
    3、最小化后恢复
    4、被其他程序挡住后,点击CListCtrl
      

  5.   

    在还有CListCtrl刷新的问题,我分析了一下,因为CSsplitter类是从CStatic继承的,所以点击列表的时候CStatic不会收到任何消息,具体还不知道原因,各位兄弟帮帮忙吧!
    -----------------------------------------------------
    设置SS_NOTIFY属性再看看点击能否收到消息
      

  6.   


    SS_NOTIFY属性设置了,点击CStatic能收到消息,当时点击列表的时候程序得到焦点,列表没有重画,有时候是重画了一部分。
    http://hi.csdn.net/attachment/201104/22/224267_1303481294LqXq.jpg
      

  7.   

    你这个这么不用SDI来做呢?不要Menu就和对话框差不多了
      

  8.   

    不知道怎么上传附件,只能把示例程序上传到资源里,不知道这样行不行
    http://download.csdn.net/source/3217399