|
特别说明:完整STemWin的1-60期教程和配套实例下载地址:链接 第39章 对话框基础知识 在上期教程我们讲解了控件的基础知识,本期教程我们接着讲解一下对话框的基础知识,有了这两部分的基础知识后,后面我们就可以进行每个控件的应用讲解了。 控件可以创建并独立使用,因为它们本质上就是窗口。如果在对话框上面创建控件的话,就更加的方便了,这样就可以充分利用GUIBulder。 39. 1 对话框的基本原理 39. 2 创建对话框 39. 3 对话框API 39. 4 总结 ' c; G) J! h, l39.1 对话框的基本原理! ?5 ~- p# z/ |; O& n% i$ E0 |: f " y% e$ O9 p$ q) }3 i, A4 { 39.1.1 输入焦点 窗口管理器能记住用户使用触摸屏、鼠标、键盘或用其他方式最终所选择的窗口或窗口对象。该窗口会收到键盘输入消息,即具有输入焦点。追踪输入焦点的主要原因是为了确定键盘命令的发送目的地。具有输入焦点的窗口会接收由键盘所生成的事件。如果要将对话框内的输入焦点移至下一个焦点对话框项目,可以使用GUI_KEY_TAB键。如果要向后移动,则可以使用GUI_KEY_BACKTAB。 39.1.2 阻塞式和非阻塞式对话框 对话框窗口可以分为阻塞式和非阻塞式。 阻塞式对话框会阻塞执行的线程。默认情况下,它有输入焦点,用户必须先关闭它,线程才能继续执行。阻塞式对话框不会同时禁用所显示的其他对话框。换言之,阻塞式对话框并非模式对话框。如果对话框为阻塞式,则表示只有在对话框关闭后,所使用的函数 (GUI_ExecDialogBox()或GUI_ExecCreatedDialog())才会返回值。而非阻塞式对话框则不会阻塞调用的线程--在它为可见时,可允许任务继续运行。创建对话框后,函数会立即返回值。 需要注意的是,切勿从回调函数中调用阻塞式函数。否则,可能会导致应用程序故障。 39.1.3 对话框过程函数 对话框就是一个窗口,它接收消息的方式与系统中其他所有窗口一样。大多数消息由对话框的窗口回调程序自动处理,而其他消息则传递到建立对话框时所指定的回调程序,这便称为对话框过程函数。 39.1.4 对话框消息 发送到对话框过程函数的两种附加消息为:WM_INIT_DIALOG和WM_NOTIFY_PARENT。在显示对话框前,WM_INIT_DIALOG消息会立即发送到对话框过程函数。对话框过程函数通常使用该消息来初始化控件,并执行其他任何会影响对话框外观的初始化任务。 WM_NOTIFY_PARENT消息则通过对话框的子窗口发送到对话框,通知任何事件的父窗口以确保同步化。通过子窗口发送的事件取决于其类型,并针对每个类型的控件单独记录。 |
微信公众号
手机版
! K! j. a, [, T8 N0 e P, U- Y