« 東京インタラクティブ・アド・アワード | メイン | 七つの鉄道物語 »

2005年05月10日

プログラムのコンテンツ

そういえば、そんなコンテンツを考えてたり、書いてたりしたけど、うやむや化している。
友達に「見てた」といわれて初めて思い出したわけですが、前に書いた内容には実は問題があった。
でも放置してた。

だめだなぁ・・・まぁいいか。

問題ってのは、位置検出の実装部分なんだけど、タスクバーのサイズを使って位置を検出していた。
でも、実はXPのタスクバーは +2だとか-2だとかのWindowサイズとのズレが存在しないらしい。
開発は2000でやってたから、気づきませんでした。

ってことで、修正しようと思って直し方を悩んでたら、とてつもなく簡単な方法があった。
というよりも、見落としてた。

SHAppBarMessageという関数で、APPBARDATA構造体にタスクバーの座標位置情報をセットさせていたわけだが、その際に上下左右の位置情報までセットされていたというのだ。
Ω ΩΩ<な、なんだってー!?

リファレンスが英語だったので、微妙に流し読みしてたのがまずかった。
APPBARDATA構造体にはuEdgeというメンバがあって、そいつの説明が。
Value that specifies an edge of the screen. This member can be one of the following values:
ABE_BOTTOM Bottom edge.
ABE_LEFT Left edge.
ABE_RIGHT Right edge.
ABE_TOP Top edge.

ということだったのです!!!ってコピペしたけど読めてねぇよ。

えーと、要するに画面の端を保持するもんで、下の4つのどれかの値を持ってます。ってことらしい。
だから、これを使えば位置情報の取得なんてお茶の子さいさいへのカッパ(古い)です。

無理やり、変なルゴリズムで実装しようとせずに、機能が提供されていないかしっかり調べるべきなようです。
まぁ、マイナーな機能の場合、提供されてるAPIがバグってたりして怖いんだけど。

投稿者 tyoro : 2005年05月10日 02:00

コメント

コメントしてくださいYO




保存しますか?