正在加载图片...
第5单基本输入一键盘和标 4.1.6创建键盘插入符 键盘插入符( Caret)是一个闪烁的位图(通常是一个细的垂直杠),它可使用户知道在窗口何处 可进行有效的键盘输入 表44创建和管理键盘插入符的CWnd成员函数 Cwnd类提供了8个创建和管理键盘插入符的 成员函数,如表44所示 CreateCaret 使用用户提供的位图创建插入符 Windows总是把键盘消息送到拥有输入焦点的 Create Gray caret 创建用户定义大小的实心灰色插入符 窗口。一般情况下,一个应用程序有多个窗口,而 Create SolidCaret创建用户定义大小的实心黑色插入符 键盘消息只能被一个窗口接收,接收键盘消息的窗Dscd销插入符 口称为有“输入焦点”的窗口,具有输入焦点的窗 显示插入符 口称为活动窗口。当某一个窗口成为活动窗口时, Hidec 隐藏插入符 Windows会加亮显示其标题栏或窗口边框 GetCaretPos 返回插入符的位置 Windows用 WM SETFOCUS和 WM Set Caret 移动插入符到窗口的某一位置 KILLFOCUS消息通知即将通知接收或失去输入 焦点的窗口。MFC分别对这两个消息进行了封装 在窗口获得键盘焦点时,就可以创建插入符了,若窗口没有焦点,就不能进行键盘输入。另外, 插入符一旦创建起来,还要在窗口中对其进行定位和显示。下面通过具体的实例讲解插入符的使用。 下面在4.1.5节创建的“CCh5Demo3”实例的基础上,在字符将要显示的位置显示插入符。其具 体实现过程如下 1.打开工程 启动 Visual c++6.0,打开4.1.5节创建的“Ch5Demo3”工程文件“Ch5Demo3.dsw”。 2.添加 WM SETFOCUS消息映射和响应函数 执行“vew"-“ Class wizard”菜单命令,am 或者使用【Ctrl+W】快捷键,打开“ MFC Message Maps. ember Vatiables Automation Activex Events Class Into I Class wizard”对话框。在“ Message Maps”选 dch5Demo3Ch5Demo3vicw. h, D-Ch5Demnric 项卡中的“ Class name”列表框中选择要响应捕| 获窗口消息的类“ CCh5demo3view”,在區m “ Object IDs”列表框中选择“ CCh5Demo3view”, 在“ Messages”列表框中选择“WM-|、 SETFOCUS”捕获窗口消息。 单击“ Add Function”按钮, Class Wizard自/e 动为 WM SETFOCUS添加了ON iw has gained inputt WM SETFOCUS消息映射宏和 OnSet Focus消息 处理函数,如图48所示。 图48“ MFC Class wizard”对话框 3.手工添加实现代码 (1)在 WM SETFOCUS消息响应函数 OnSetFocus(中,实现插入符的创建与显示。代码如下 void cch5 Demo 3view:: OnsetFocus (cWnd* poldwnd) 励志照亮人生编程改变命4.1.6 创建键盘插入符 键盘插入符(Caret)是一个闪烁的位图(通常是一个细的垂直杠),它可使用户知道在窗口何处 可进行有效的键盘输入。 CWnd类提供了8个创建和管理键盘插入符的 成员函数,如表4.4所示。 Windows总是把键盘消息送到拥有输入焦点的 窗口。一般情况下,一个应用程序有多个窗口,而 键盘消息只能被一个窗口接收,接收键盘消息的窗 口称为有“输入焦点”的窗口,具有输入焦点的窗 口称为活动窗口。当某一个窗口成为活动窗口时, Windows会加亮显示其标题栏或窗口边框。 Windows 用 WM_SETFOCUS 和 WM_ KILLFOCUS消息通知即将通知接收或失去输入 焦点的窗口。MFC分别对这两个消息进行了封装。 在窗口获得键盘焦点时,就可以创建插入符了,若窗口没有焦点,就不能进行键盘输入。另外, 插入符一旦创建起来,还要在窗口中对其进行定位和显示。下面通过具体的实例讲解插入符的使用。 下面在4.1.5节创建的“CCh5Demo3”实例的基础上,在字符将要显示的位置显示插入符。其具 体实现过程如下。 1. 打开工程 启动Visual C++ 6.0,打开4.1.5节创建的“Ch5Demo3”工程文件“Ch5Demo3.dsw”。 2. 添加WM_SETFOCUS消息映射和响应函数 执行“View”→“ClassWizard”菜单命令, 或者使用【 Ctrl+W 】快捷键,打开“ MFC ClassWizard”对话框。在“Message Maps”选 项卡中的“Class name”列表框中选择要响应捕 获窗口消息的类“ CCh5Demo3View ”, 在 “Object IDs”列表框中选择“CCh5Demo3View”, 在 “ Messages ”列表框中选择“ WM_ SETFOCUS”捕获窗口消息。 单击“Add Function”按钮,ClassWizard自 动 为 WM_SETFOCUS 添加了 ON_ WM_SETFOCUS消息映射宏和OnSetFocus()消息 处理函数,如图4.8所示。 3. 手工添加实现代码 (1)在WM_SETFOCUS消息响应函数OnSetFocus()中,实现插入符的创建与显示。代码如下: void CCh5Demo3View::OnSetFocus(CWnd* pOldWnd) 79 励志照亮人生 编程改变命运 第 5 章 基本输入—键盘和鼠标消息 表4.4 创建和管理键盘插入符的CWnd成员函数 函数 功能 CreateCaret 使用用户提供的位图创建插入符 CreateGrayCaret 创建用户定义大小的实心灰色插入符 CreateSolidCaret 创建用户定义大小的实心黑色插入符 DestoryCaret 销毁插入符 ShowCaret 显示插入符 HideCaret 隐藏插入符 GetCaretPos 返回插入符的位置 SetCaretPos 移动插入符到窗口的某一位置 图4.8 “MFC ClassWizard”对话框
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有