そういえば、そんなコンテンツを考えてたり、書いてたりしたけど、うやむや化している。
友達に「見てた」といわれて初めて思い出したわけですが、前に書いた内容には実は問題があった。
でも放置してた。
だめだなぁ・・・まぁいいか。
問題ってのは、位置検出の実装部分なんだけど、タスクバーのサイズを使って位置を検出していた。
でも、実は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がバグってたりして怖いんだけど。
Trackbacks:0
- TrackBack URL for this entry
- http://txt.tyo.ro/mt/mt-tb.cgi/781
- Listed below are links to weblogs that reference
- プログラムのコンテンツ from tyoro.txt
Comments:0