<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      改變插入光標的閃爍速度

      [摘要]問題  對于大多數用戶來說,插入光標或編輯光標閃爍得太塊或太慢都會使他們不易辨別,因此希望能夠允許用戶來定制插入光標的閃爍速度,以便他們能夠較容易地閱讀編輯框中的文本并找到它們相應的位置。方法  在...
      問題
        對于大多數用戶來說,插入光標或編輯光標閃爍得太塊或太慢都會使他們不易辨別,因此希望能夠允許用戶來定制插入光標的閃爍速度,以便他們能夠較容易地閱讀編輯框中的文本并找到它們相應的位置。

      方法
        在 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;
          }
      }

        3.把下面兩行添加到類 CBlinkDlg 的構造函數中:
        old_time=GetCaretBlinkTime();
        cur_setting=0;
        4.在此類的頭文件中,添加下面暗紅色字體的行:

      class CBlinkDlg : public CDialog
      {
      private:
          UINT old_time;
          int cur_setting;

      // Construction
      public:
          CBlinkDlg(CWnd* pParent = NULL);   // standard constructor
          ~CBlinkDlg();

        5.將下面的代碼添加到類的源文件 BlinkDlg.cpp 中。

      CBlinkDlg::~CBlinkDlg()
      {
          SetCaretBlinkTime(old_time);
      }

        6.接著,重新進入 AppStudio。從菜單列表中選擇主菜單對象并添加標題為 Dialog 菜單,在此菜單上添加標題為 Change Caret Blink Speed、標識符為 ID_CARET_SPEED 的菜單項,保存此菜單,退出 AppStudio。
        7.在 ClassWizard 中,從對象列表中選擇對象 ID_CARET_SPEED,從消息列表中選擇消息 COMMAND,點擊按鈕 Add Function 添加新函數 ,在此方法中添加如下代碼。

      void CMainFrame::OnCaretSpeed()
      {
          CBlinkDlg dlg;

          dlg.DoModal();
      }

        8.把下面的 include 文件行添加到源文件 MainFrm.cpp 的頂部:
        #include "BlinkDlg.h"
        9.編譯并運行此例子程序。

      用法
        當用戶選擇對話框并點擊按鈕 Change Caret Blink 時,方法 OnChangeCursorSpeed 被調用,此方法檢查成員變量 cur_setting 的當前值,并在方法 SetCaretBlinkTime 中設置相應的速度。在對話框的構造函數中,通過對函數 GetCaretBlinkTime 的調用,來獲取插入光標閃爍速度的初始值。在例子程序中,將根據此初始設置值,使閃爍的時間或者減半(加快閃爍)或者倍增(減慢閃爍)從而來改變光標的閃爍速度。在對話框的析構函數中,通過方法 SetCaretBlinkTime 將插入光標閃爍速度設置為 Windows 的默認值,以確保對其它應用程序不產生影響。應該注意:整個一次閃爍的時間為所設置時間的兩倍,這是因為:這個時間除包括打開光標(光標變亮)所用的時間外,還要包括關閉光標(光標變暗)所用的時間。


      日韩精品一区二区三区高清