What's new

MFCの難しいところ(その3)

2016年8月30日

やっと最後の3つ目。

今までのはぶっちゃけ前置きみたいなもので、今回が一番大事だ。
なぜなら今までの2回というのは、目が見えていようとそうでなかろうと主に知識不足という悲しい原因がもとで起こってしまう事故みたいなもの。

でも今回は違う。
目が見えていれば数分で解決することが、目が見えていないばっかりにかなりの時間を費やしてしまった話をしよう。

それは、ウィンドウズからなんらかのメッセージを受け取れるようにプログラムを作ろうとしたとき。

具体的には…。
前回書いたようなユーザーがメニューを開こうとしているときとかに、ウィンドウズからみくみくオセロに「メニューが開かれようとしているよ」というメッセージが飛んでくるのだ。
こいつをうまくキャッチしないとメニューを自由に変更することができない。

ということは、コーディングする際にも
「この部分のプログラムは、ウィンドウズから送られてくるメッセージをキャッチして動く部分だよ」
という手続きを踏まなくてはいけないことになる。

そしてこの手続きをする部分というのがやっかいなのだ。

具体的には、クラスウィザードという専用ツールを立ち上げて、目的のメッセージとそれを受けるプログラム名を選んで関連付ける処理をさせる。
しかし目が見えていない場合、当然スクリーンリーダーでクラスウィザードを読み上げさせるのだが、これがうまく読み上げてくれないのだ。

目が見えていれば何回かマウスの左クリックをするだけでできてしまうらしいのだが…。
ぼくみたいな目の見えていない人間の場合は、ほかの方法を試みるしかない。

まぁでもこのあたりまでは目の見えない生活を10年以上やっていれば普通に起こることなので、そんなにへこむことではない。

しかし問題はここから。
ほかの方法を探そうとネット検索をしたのだが、出てくるページ出てくるページすべて「クラスウィザードを使いましょう!」ときたもんだ。
「おまえらそろいもそろってクラスウィザードの手下かよ!」
と突っ込みを入れたくなるぐらいだ。

そんなわけで手動で何とかする方法なんて載ってなかった。
正確に言えば、ぼくが見つけられなかっただけなのかもしれないが…。

きっとよっぽどクラスウィザードが便利なのだろう。
それにそもそも手動で何とかすることは不可能なのかもしれないというあきらめモードにもなりかけた。

しかし、本家マイクロソフトのページの奥深くに書いてあったのをやっと見つけた。
そのページにしたがってコーディングし動かしてみた。

そうしたら動いたのだ。
やった!
自力で壁を乗り越えたのですごくうれしかった!

実は今回書いたことは、以前すでに書いている。
そのときは、マウスの左クリックを認識させるというような内容で書いているので興味がある人は探してみてほしい。

話は戻るが…。
そのページには心強いことに、マイクロソフトは作成するアプリケーションの設定などはなるべくプログラム上に記述することが望ましいと考えていることもわかった。
なぜならプログラム上に記述したほうが、それを書き換えるだけで簡単に変更ができ、結果柔軟なプログラムができるのだ。

さすが泣く子も黙るマイクロソフト。

ぼくのような視覚障害者のためではなかったが、プログラム上に書いてくれるのであれば…。
そこから設定を理解したり、変更したりできる。

VisualC++は正直、スクリーンリーダーでは使えない部分もあるが、今回工夫しだいである程度は何とかなるものなのだということを体験できてよかった。