我在MAINFRAME下面建立VIEW,VIEW下面又建立MFLEXGRID控件.MFLEXGRID上面动态生成了一个RICHEDIT.
现在从文件里读取信息到GRID.但在点击GIRD的时候,如果GRID的单元格里有数据则让EDIT显示出来,单元格内容也显示在EDIT里,可以进行编缉.点击没有信息的单元格时,EDIT做成了不显示.但这时候如果按键盘的上,下键,可以在GRID 的单元格上移动.
(以上为正确现象)
现在做了一个TOOLBAR,上面有若干按钮,可以对GRID里的内容进行播放.点击按钮后,会把焦点设到VIEW上.
现在出现了这样一个情况.
1.点击GRID有数据的单元(EDIT显示)
2.切换到别的应用程序(ALT+TAB),然后切换回来.(焦点在EDIT上,有光标)
3.再点击没有数据的单元格,(EDIT不显示,焦点在GRID上)
4.TOOLBAR上的按钮按下.(焦点应该在VIEW上)
但现在焦点不在VIEW上,在被隐藏了的EDIT上.然后键盘上的上,下键再按下时,GRID的单元就不能移动了.请各位高手指点一下.帮忙分析一下原因,谢谢!!!

解决方案 »

  1.   

    TOOLBAR上的按钮按下后调用SetFocus(),将焦点移动到VIEW上.
      

  2.   

    EDIT显示前记录单元,隐藏EDIT后,SetFocus(),SetCol,SetRow
      

  3.   

    确实有这个问题,有时候windows会把焦点交给已经隐藏了的控件上。建议lz在隐藏richedit时同时将它的父窗口置为别的窗口,或者style设为WS_DISABLED
      

  4.   

    但现在焦点不在VIEW上,在被隐藏了的EDIT上.然后键盘上的上,下键再按下时,GRID的单元就不能移动了.
    -----------
    不是View,应该在Grid上才对吧!当View获得焦点时总是把焦点给Grid。
      

  5.   

    但现在焦点不在VIEW上,在被隐藏了的EDIT上.然后键盘上的上,下键再按下时,GRID的单元就不能移动了. 
    ----------- 
    不是View,应该在Grid上才对吧!当View获得焦点时总是把焦点给Grid。
    -------------
    哦,是这样的,看了一下GRID的ONSETFOCUS()方法,果然在VIEW设置焦点后又调了GRID的ONSETFOCUS()方法.
      

  6.   

    确实有这个问题,有时候windows会把焦点交给已经隐藏了的控件上。建议lz在隐藏richedit时同时将它的父窗口置为别的窗口,或者style设为WS_DISABLED
    ---------------------------------或者style设为WS_DISABLED这个要怎么设置?有什么函数可以直接设置吗?
      

  7.   

    pEdit->ModifyStyle(),第一个参数是要Remove的style,第二个参数是要添加的style
      

  8.   

    问题基本解决,谢谢三楼的朋友!
    采用了你下面的方法.
    -------------------------------------------------
    建议lz在隐藏richedit时同时将它的父窗口置为别的窗口
    -------------------------------------------------