建了一个sheet, 加入了一个page,  在这个page中又加入一个自定义的树形控件CMyTree,  这个树形控件中又用到了自定义的编辑框CMyEdit, 现在点击这个编辑框, 使编辑框获得输入焦点, 输入数据, 接着点击sheet中的OK按钮, 这个时候第一次点击只能使OK按钮获得焦点, 第二次点击才能触发OK按钮的响应事件.
这是为什么?
现在我想能够在任何情况下都能够一次点击就能够触发事件,应该怎么做?

解决方案 »

  1.   

    我以前遇到过你说的这个问题。
    是因为我程序中的一个列表控件使用了SetCapture();
    而没有使用ReleaseCapture()。
    不知道你的是不是也是类似情况引起的
      

  2.   

    好象不是, 我点按钮只能获得焦点,但我点按钮旁的空白处能够响应ON_LBUTTONUP, 说明并没有SetCapture()
      

  3.   

    你为该类添加OnApply()虚函数,不要响应OK函数,因为当你点击Ok时,首先要执行OnApply()
      

  4.   

    你把在OK函数处理的代码粘贴到你添加的OnApply()函数试一下看看。
      

  5.   

    设置的就是响应OnApply(), 但第一次点击不能响应,第二次点击才行.
    但如果CMyEdit失去了焦点(不处于插入状态), 点一下就能响应.
      

  6.   

    你是不是为CMyEdit添加了失去了焦点函数OnKillfocusEdit,并在里面设置了SetCapture()
      

  7.   

    对于Cancle按钮也有这样的情况:  如果CMyEdit失去了焦点(不处于插入状态), 点一下就能响应. 如果CMyEdit处于插入状态, 就需要点两下才能响应事件另外问下: 响应OK()与OnApply()有什么区别?
      

  8.   

    因为当你点击Ok()时,首先要执行OnApply(),再才响应Ok()函数。你的题目是“点击sheet中的OK按钮”,你确定你添加的是OnApply()?
      

  9.   

    确定添加了.
    我又看了下代码,在CMyEdit中没有SetCapture操作,
    在CMyTree中有SetCapture操作, 在KillFocus中已确保做了ReleaseCapture.
    但问题没有解决.
      

  10.   

    是否只能从SetCapture这个角度考虑?
      

  11.   

    是不在PreTranslateMessage处理了一些消息,有可能引起这个问题
      

  12.   

    是否有WS_TABSTOP 的style ?