後日談

えっと、すごい筋肉痛です。30分しか打ってないのに。
痛いのは、上腕・背中・首筋。首が回らない。

えっと、バグ発見です。マルチディスプレイに対応してなかったです。
プライマリモニタしか表示されない。

悪いのは::GetSystemMetrics()の引数。SM_CXSCREEN,SM_CYSCREENだとプライマリモニタのサイズしかわからない。正解はSM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN, SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN。

SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREENだけでもいいような気がしたけど、プライマリモニタを右に持ってくると仮想スクリーン原点が(0,0)にならないので、SM_XVIRTUALSCREEN, SM_YVIRTUALSCREENも使いなさいね。ってことらしい。

で、コンパイルしようとしたんだけど定数が定義されていないといわれて失敗。調べてみるとwinuser.hにこんな風に書かれている。


#if(WINVER >= 0x0500)
#define SM_XVIRTUALSCREEN 76
#define SM_YVIRTUALSCREEN 77
#define SM_CXVIRTUALSCREEN 78
#define SM_CYVIRTUALSCREEN 79
#define SM_CMONITORS 80
#define SM_SAMEDISPLAYFORMAT 81
#endif /* WINVER >= 0x0500 */

調べてみるとWINVERの値は0x400になってた。あれ?

みつけた。
Using the Windows Headers

というわけで、0x0500を設定。::GetSystemMetrics()のリファレンスによるとSM_XVIRTUALSCREENはwindows 98/windows 2000以上となっているから、0x410のような気もするけどどうなんだろう。

逆にwindows 98未満で実行した場合はどうなるのかな。失敗は0を戻すらしいから、表示領域が空になって何も表示されなくなるのかな。

どっかで、windows 95や98が動いてないかな。

トラックバック(0)

トラックバックURL: http://www.happeningnode.net/MTcgi/mt-tb.cgi/80

コメントする

このブログ記事について

このページは、Michisaka.Koshiが2005年5月 9日 23:07に書いたブログ記事です。

ひとつ前のブログ記事は「打ちっぱなし」です。

次のブログ記事は「牛乳が好きな人のメグミルク」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。