17
A
回答
30
有两种方法可以将初始焦点设置为MFC中的特定控件。
第一个,也是最简单的方法就是利用你的控件选项卡顺序的。当您使用Visual Studio中的资源编辑器布局对话框时,可以为每个控件分配一个选项卡索引。与最低选项卡索引的控件将自动收到初始焦点。要设置控件的Tab键顺序,请从“Format”菜单中选择“Tab Order”,或按Ctrl + D。
第二种稍微复杂的方法是覆盖表示对话框的类中的
OnInitDialog
function。在该功能中,您可以将输入焦点设置为您希望的任何控件,然后返回FALSE
以指示您已明确将输入焦点设置为对话框中的其中一个控件。如果返回TRUE
,框架会自动将焦点设置为默认位置,如上所述,作为对话框中的第一个控件。要将焦点设置为特定控件,请调用GotoDlgCtrl
method并指定您的控件。例如:BOOL CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); // Add your initialization code here // ... // Set the input focus to your control GotoDlgCtrl(GetDlgItem(IDC_EDIT)); // Return FALSE because you manually set the focus to a control return FALSE; }
注意,你应该不组焦点在对话框中通过简单地调用特定控制的
SetFocus
方法。 Raymond Chen explains here on his blog为什么它比这更复杂,为什么GotoDlgCtrl
函数(或其等价函数,WM_NEXTDLGCTRL
消息)是首选。
相关问题
- 1. 设置初始焦点
- 2. 在Silverlight中设置初始控件焦点
- 3. 如何在初始渲染后设置ICEFaces组件的焦点?
- 4. 在Gtkada中设置窗口焦点
- 5. 验证控件 - 将焦点设置在特定的锚点上
- 6. 如何在布局中设置初始焦点?
- 7. 显示未设置焦点的窗口
- 8. 如何在wxWidgets中将键盘焦点设置为NULL窗口?
- 9. 如何在ASCX用户控件中设置控件焦点?
- 10. 如何在Java中设置初始窗口大小OpenGL
- 11. 如何在经典asp的子窗体中的控件onLoad中设置焦点?
- 12. 弹出窗口设置焦点
- 13. Jquery - 将焦点设置到窗口
- 14. 替代模糊()设置窗口焦点?
- 15. 将焦点设置到uifigure窗口
- 16. 如何在listview中设置特定项目的焦点。 Android的?
- 17. 如何将焦点设置在datagrid/gridview中的特定行上?
- 18. 如何在设置焦点控制
- 19. 如何在JavaScript模式窗口上设置焦点?
- 20. 如何将焦点设置为特定的小部件
- 21. 如何在Silverlight的代码中为控件设置焦点?
- 22. 如何在flexganttfx中将焦点设置为特定活动
- 23. 在silverlight中设置登录子窗口的焦点
- 24. 如何在使用Caliburn.Micro时设置Silverlight中表单的初始焦点
- 25. 将焦点设置在Perl/GTK2控件
- 26. 使用applescript将焦点设置为应用程序的特定窗口
- 27. 在弹出窗口焦点设置会话变量在ADF中
- 28. 如何将焦点设置为Windows窗体应用程序中的控件?
- 29. 如何将焦点设置到另一个窗口?
- 30. 如何使用WatiN将焦点设置到浏览器窗口
其实我是问窗口过程中...... – karthik 2011-02-25 07:18:27
@Karthik:如果你在窗口过程中,你没有设置初始焦点。初始焦点是首次显示对话框时焦点所在的控件。要设置它,您需要使用我描述的两种方法之一。此外,当你使用MFC时,很少需要重写'WndProc'函数。您应该针对您要回复的消息使用特定的功能。但是如果你坚持这样做,你仍然可以使用'GotoDlgCtrl'方法,正如我在答案的第二部分中所演示的那样。 – 2011-02-25 07:21:32
我的错误是我在GetDlgItem()CWnd指针调用SetFocus(),而不是GotoDlgCtrl()。 GotoDlgCtrl()工作,但SetFocus()没有。 – franji1 2015-04-29 18:36:09