我用资源管理器设计了一个界面,上面有几个文本框和两个按钮。
在创建后,向对话框发送一个自定义消息。对话框的消息处理函数对该自定义消息的处理是:
根据不同条件调用EnableWindow函数将文本框禁止掉,如果所有的文本框都被禁止输入了,那么就调用SetFocus函数将焦点设置到一个按钮上,但现在的情况是按钮没有获得焦点,按钮的快捷键也无效,按TAB键也看不到焦点在哪。请问,上面的情况原因是什么,怎么解决?谢谢!!

解决方案 »

  1.   

    两个什么按钮? 默认(default)焦点在那个上?
      

  2.   

    调用SetFocus函数将焦点设置到一个按钮上之前,这个按钮必须是Enable的,你先把它设回来
      

  3.   

    在检查都所有的编辑框都禁止掉以后,使用DLG的GetDlgItem(要获取焦点的按钮的ID)函数获取要获取焦点按钮的指针,然后调用这个指针的SetFocus()函数就可以了!
      

  4.   

    可以用文本编辑器打开这个.rc文件,按照你要获取焦点的顺序重新排列文件中控件出现的顺序
    。先出现的先响应TABLE来切换焦点
    当然还可以使用setfouse()
      

  5.   

       设置焦点  以下语句添加在OnInitDialog()函数中
    GetDlgItem(ID)->SetFocus();   ID 为控件ID
       快捷键在 PreTranslateMessage(MSG* pMsg)函数中设定
       至于按TAB 键没反应  检查控件属性设定时 Tab Stop 项是否选中 须选中
      

  6.   

    如果我只保留一个按钮,把别的文本框和相关代码都去掉,进去之后可以看到按钮上有获得焦点的虚线框,点击该按钮可以关闭对话框,但是按回车键却没有反应,按快捷键也没反应,这是为什么?补充说一下,快捷键是在按钮的Caption中的一个字母前面加'&'符号来设置的。