问题 对于大多数用户来说,插入光标或编辑光标闪烁得太块或太慢都会使他们不易辨别,因此希望能够允许用户来定制插入光标的闪烁速度,以便他们能够较容易地阅读编辑框中的文本并找到它们相应的位置。
方法
在 Windows 9x 可定制的领域里,如果用户想作某种改变而操作系统却不允许改变,这确实是件糟透了的事情,Windows 9x 充分考虑了这一特殊问题,并通过对 API 函数 SetCaretBlinkTime 的简单调用,解决了这一问题。
函数 SetCaretBlinkTime 顾名思义,用来改变编辑域中光标(也就是插入光标)的闪烁速度。与此相伴的函数 GetCaretBlinkTime 用来返回插入光标闪烁速度的当前设置值,当利用诸如 SetCaretBlinkTime 这样的系统函数时,应用程序通常应“考虑周到”,即在完成使用某一属性后,应把它恢复为原来的设置值。插入光标的闪烁速度通常是为 Windows 中的所有应用
程序设置的,所以当从自己的编辑窗口中移去光标时,应通过把闪烁速度重新设置为先前的值或缺省的值,来恢复 Windows 的设定。
本节中,将讨论如何在应用
程序中减慢或加快光标的闪烁速度。
步骤
按照如下的步骤生成一个例子
程序。选择主菜单 Dialog 中的菜单项 Change Caret Blink Speed,会弹出一个对话框。点击按钮 Change Caret Blink,然后在编辑域中点击一下,可以看到插入光标开始正常闪烁。多次点击按钮 Change Caret Blink,每次点击按钮后,在编辑域中点击一下,可以看到插入光标的闪烁速度会发生各种改变,并且在与此按钮相邻的文本域中显示出闪烁速度。
实现例子
程序的步骤如下:
1.在 Visual C++ 中利用 App Wizard 创建新的工程 Ld94。进入 App Studio,创建新的对话框,在对话框中,添加标题为 Change Caret Blink 的按钮以及标题为 Speed: Normal、ID 为 IDC_TEXT 的文本域。在对话框中再添加一个编辑域,把按钮 OK 和 Cancel 移到对话框的底部。
2.进入 Class Wizard,为刚创建的对话框创建一个新的对话框类。把此类命名为 CBlinkDlg,从下拉列表中选择 CBlinkDlg,从对象列表中选择对象 IDC_BUTTON1,从消息列表中选择消息 BN_CLICKED,点击按钮 Add Function 添加新的函数 OnChangeCursorSpeed,在 CBlinkDlg 的方法 OnChangeCursorSpeed 中添加如下代码。
void CBlinkDlg::OnChangeCursorSpeed()
{
switch(cur_setting)
{
case 0:
cur_setting=1;
SetCaretBlinkTime(old_time);
GetDlgItem(IDC_TEXT)->SetWindowText("Speed: Normal");
break;
case 1:
cur_setting=2;
GetDlgItem(IDC_TEXT)->SetWindowText("Speed: Slow");
SetCaretBlinkTime(old_time*2);
break;
case 2:
cur_setting=0;
GetDlgItem(IDC_TEXT)->SetWindowText("Speed: Fast");
SetCaretBlinkTime(old_time/2);
break;
}
}