◀ANSI版開発トップへ
  • 500 キャレット(カーソル)の点滅速度、形など
    • 502 Re:キャレット(カーソル)の点滅速度、形など
  • [500] キャレット(カーソル)の点滅速度、形など ああああ 2001年06月28日 21:30


    リファレンスでキャレット(カーソル)の点滅速度に
    関する API 関数を見つけました。

    UINT WINAPI GetCaretBlinkTime (VOID);
    BOOL WINAPI SetCaretBlinkTime (uMSec);

    これらの関数を WM_SETFOCUS および WM_ACTIVATE で fActite == WA_{ACTIVE,
    CLICKACTIVE} のときに呼び、ついでにカーソルの形も CreateCaret() API で変え
    て、DestroyCaret() で破棄しましょうか。

    ただし、キャレットは共有資源なので、

    キーボードフォーカスを失う(WM_KILLFOCUS)、
    あるいは inactive になるとき(WM_ACTIVATEで fActive == WA_INACTIVE)、

    点滅速度を復元するようにということです。


    てきとーにまとめると、

    UINT uMilliSecOld, uMilliSec;

    Activated or SetFocus:
    //! 古い点滅速度を保存のため、取得。
    uMilliSecOld = ::GetCaretBlinkTime()
    //! 新しい点滅速度を設定。共有資源。
    ::SetCaretBlinkTime(uMilliSec);

    //! キャレットの形を作成・設定。共有資源。
    ::CreateCaret(...);

    Inactivated or KillFocus:
    //! 古い点滅速度に復元。共有資源。
    ::SetCaretBlinkTime(uMilliSecOld);

    //! 作成したキャレットの形を破棄・復元。共有資源。
    ::DestroyCaret(...);

    • [502] Re:キャレット(カーソル)の点滅速度、形など げんた 2001年06月28日 21:47

      解説どうもありがとうございました.キャレットの点滅を止めることが出来そうですね.速度変更したいという要望はあるかなぁ.変えたい人はWindowsの標準設定で変えているよね.
      形と合わせてMS-DOS流とかUNIX流とか出来るかも.

      UNIXのターミナルでよく見る,Focusがあると■で無いと□というのも良さそう.