INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
本業の方のお仕事が再び忙しくなりつつあるので、断続的にしばらく更新が止まることがあります。

目次 | ←前へ / 2019-12-06 00:00 / 次へ→ / 最新へ⇒

■「マウスのお供」で編集ボックスの上にカーソルが来たら表示を一時OFFする機能について

2019/12/ 6 0:00:00


RSSRSS配信中

https://www.inasoft.org/








昨日付で、「マウスのお供 ver.1.61.10β」を公開しています。

「マウスのお供」で、だいぶ前にユーザー要望で「Google Chromeの文字入力欄の上にカーソルが来たら、時計等の表示を一時的に消して欲しい」という要望が来ていました。
普通の文字入力ボックスなら、アクティブなコントロールのクラス名の判別でどうにかなるのですが、Google Chromeを始めとする各種ブラウザは、ブラウザ内の文字入力欄かどうかの外部からの判別ができず、この要望には手をつけられずにおりました。

ただ、考えてみたら、文字入力欄上だと、だいたい、マウスカーソル形状がIBeamに変わるから、それを判別材料に使えるんじゃないかと考えました。

というわけで、マウスカーソルが編集ボックスの上に乗ったら………ということで、時計等の表示を一時OFFする機能を追加しました。

201912_setdialog16e1.png

実際には、マウスカーソルがIの形(IBeam)になったかどうかで判定しています。

そのため、ブラウザ上の通常文字が並んだ部分の上にマウスカーソルがあっても時計等の表示は一時OFFになりますし、編集ボックス扱いではないGoogle Chromeのアドレス入力欄等の上でも時計等の表示は一時OFFになります。

カーソル形状がIBeamかどうかは、次のようなプログラムで検出しています。

HCURSOR hCursorIbeam = LoadCursor( NULL, IDC_IBEAM ); // アイビーム (縦線) カーソル
CURSORINFO ci;
ci.cbSize = sizeof(ci);
if (GetCursorInfo(&ci)) {
    if (ci.hCursor == hCursorIbeam) {
        // グローバルカーソルがIBeam形状であれば、時計等の表示を一時OFFにする
    }
}

GetCursorInfo() でグローバルカーソルの情報が得られるので、そのハンドルがIBeamのハンドルと一致しているかで判定しています。

最初は、単純にGetCursor()で取得できるかと思ったのですが、他のソフトの上での情報までは取得できなくなってしまうので、GetCursorInfo() を使うことになりました。




目次 | ←前へ / 2019-12-06 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。




2555255 (+0399)[+0556]

Copyright© 2010-2021 INASOFT