前に作りかけだったクラスで、"TCalenderDrawer"というものがあります(当初はコンポーネントの予定だった)。
名前の通りカレンダーを描画するクラスで、今日はこれをちょっと修正して、ちゃんと動くようにしました。
…で、せっかくなのでちゃんとしたカレンダーのソフトでも作ろうかと、WS_EX_TRANSPARENTを使ったフォームにこれを描画するようにしてみました。
それでは操作できないので、Shiftキーを押したらWS_EX_TRANSPARENTを解除するようにしようかと、
いろいろな調査がてら、キーボードフックを調べてみましたが…、
思ったほどには、簡単にはいかないようです。
DLL内でSetWindowsHookEx
を呼び出し、フックプロシージャで適当に親アプリケーションにPostMessage…という流れはわかっていますし、
C言語でのサンプルはあっという間に見つかったのですが、
残念ながら、VC++じゃないといろいろと複雑みたいですね。
VC++でなら共有データセグメントがわずかなコードで書けるようですが、
他ではダメなようで…。
そのことを詳しく書いたページも少なくて、困ってしまいました。
コンパイラごとに微妙な差異があるというのも、なんだかやりづらいですね。
仕方がないのでメモリマップドファイルでも使うかなぁ…となるとDelphiでやっても、大して変わりないかもしれませんね。
これまた(BCCのも、Delphiのも)サンプルには事欠かないので、いいんですけどねえ^^;
――でも、たかがShiftキーを監視するためだけに、フックをインストールするのも無駄な気がしますね、
フックDLLはすべてのプロセスにインストールされるんだから、そうしたら全体が少し重くなってしまうのでは…?と、思いますし。
簡単なものならタイマーでGetKeyState
を使ってるだけでも、良かったりして…。
先日のことですが、ありがたーいメールをいただきました。
なんと、TMemoばかりでなく、FontWindowもお気に入りの色も、役に立っていると言うことです。
あんまり自信のないソフトもありますが、役に立っただなんて、うれしいです。
TMemo、お気に入りの色は…一応ベクターにも出してますし、一応自信があるものですが、
FontWindowですかあ、結構適当に作っていたことですし、いろいろと修正してみた方がいいかもしれません、
Font関係のAPIなら、ちょっとならわかりますし、色々追加のしようはあるかもしれませんねえ。
いろいろできたら、改めてベクターに登録するなんて言うのも、いいかもしれませんね、
IDEABOXの中におくものもちょっとは減りますし^^;
そういえばこの日誌も、書くのが不定期になってきましたし、管理も面倒ですし、
はてなダイアリーかなにかに移行しようかな…などと思っています。
とりあえずもうすぐ7月、いい区切りですし、考えておこうかな…。