none
为什么子窗口一直无法获得键盘事件的焦点 RRS feed

  • 问题

  • 我的程序是这样的:主窗口fm1,生成一个模态子窗口fm2, Form2^fm2=gcnew Form2;  fm2->ShowDialog(this);在fm2中生成一个子窗口fm3,然后关闭fm2,要求fm3是fm1的子窗口,Form3^ fm3=gcnew Form3;fm3->MdiParent=this->Owner;fm3->Show();,可是这时的fm3无论如何都得不到键盘事件的焦点,一直是fm1在接收键盘消息,为什么啊,我觉得也许是我这么做不合理,可是哪里不合理呢,请高手指教
    2009年11月18日 2:47

全部回复

  • 这个问题又被我自己弄出变通的方法了,fm3获得键盘焦点是不会,但是可以用fm1控制fm3,代码: Form3^ tempChild = dynamic_cast<Form3^>(this->ActiveMdiChild);,暂时只能先这么弄了,谁有更好地办法欢迎指教
    2009年11月18日 5:46
  • 你好!
         frm2为模态子窗口,frm1为所有者窗体,所以frm2关闭,frm1获得了输入焦点!
         可以使用Focus方法来让窗体获得输入焦点!
    周雪峰
    2009年11月19日 4:17
    版主
  • 我在fm3的Activated事件中写this->Focus();,返回值一直是false,搞不懂啊
    2009年11月19日 5:59
  • 请问可以提供相关的实例代码吗?
    周雪峰
    2009年11月19日 6:33
    版主
  • 我的代码太长,而且有点乱。我做了一个简单的程序,创建三个form,就如我第一次发言说的方式做,试了一下也是这样。我用的是vs2005,建的vc++的窗体应用程序
    2009年11月19日 7:11
  • 请提供相关的实例代码,你做一小一点的例子,让我们看到你的场景。

    Best regards,
    Riquel
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2009年11月24日 9:12
    版主