我show了一dialog中有些控件,当从来都没有碰过这些控件时killfocus有响应,当只要我点过控件扣dlg的killfocus就罢工了,请问这是什么道理啊?
还有我继承cbutton写了一个xbutton,再加上一个dialog(中含一个按钮),当点击这按钮时我让它响应xbutton的消息,让其去改变xbutton的成员变量,可是这个点击事件就是不响应?

解决方案 »

  1.   

    顶啊顶啊!!
    就是dialog无法响应killfocus
      

  2.   

    原因想不明白,不过如果不是非要用KillFocus的话,用SetFocus将焦点设置到其他对话框或者控件上,是能够解决问题的
      

  3.   

    你在dlg中的 KillFocus中写了一些不符合逻辑的东东 !
      

  4.   

    我要做:
    一个button点一下弹出一dialog,dialog中有该button的相关属性(就如vc中的控件编辑一样),当点击该dialog的其它地方时,dialog就会显示.
    所以我就用dialog的killfocus里写dialog.showwindow(sw_hide),结果就是不响应没有控件或不碰任何一dialog的控件时它是正常sw_hide的,但只要碰了控件,我再点dialog以外的地方,它就是不响应killfocus
      

  5.   

    下一个问题就是:
    我继承了一button类XButton,
    我继承了一dialog类XDialog,该dialog中有一个按钮,我该其点击事件通过classwizards映射到XButton里的OnYes()函数,结果这个消息映射就是不的执行
      

  6.   

    ==========================================================
    当点击该dialog的其它地方时,dialog就会显示.
    ==========================================================
    这时候dialog还没有显示,怎么点击该dialog的其他地方?是不是笔误,将“隐藏”写成“显示”了?
    我明白了,当你没有碰到任何控件时,他的焦点是在dialog上的,这时候如果OnKillFocus,的确就是dialog响应了,当你碰到其中的控件是,其焦点已经到控件上去了,而不是在dialog上了,所以,不响应dialog的那个killfocus函数,因为他本来就没有焦点了你应该在dialog的OnActivate( UINT nState, CWnd* pWndOther, BOOL bMinimized )函数中判断,当nState为WA_INACTIVE时,就时该dialog失去了焦点(即不激活了)这次应该不会有问题了,呵呵
      

  7.   

    第二个问题中,单击事件不能直接映射到XButton里的OnYes()中的吧?应该是在XDialog中产生映射函数,然后调用其父类(也就是XButton)的OnYes()函数,这样应该没有问题