>floryさんのおっしゃる「特定状況下でうまくいかなかった」というのが気になります。
>覚えていらっしゃれば、教えていただけないでしょうか?
そのときのスクリプトが残っていたので、うまくいかなかった状況を再現しようとしてみましたが、……きちんと動作しますな。まったく別の原因だったようです。
というわけで、前言撤回、自分で確認した限りではうまく動作します。お騒がせしました。
>ウインドウID=0 のウインドウのほうが他のより縦横とも幅が1ドットずつ
>小さいという結果になりました。
それは、ウィンドウID1以降のウィンドウがサイズ可変の状態で作られるからです。
たとえ見た目が同じでも、サイズ可変ウィンドウとサイズ固定ウィンドウではウィンドウの枠の幅が異なります。
実際、ウィンドウID1以降を作成するときに、screen命令の第四パラメータに+4(サイズ固定)してみると、ウィンドウID1以降でもID0と同じ値になります。なるはずです。
ちなみに、ウィンドウの枠の幅は、ka-naviさんが仰られているGetSystemMetrics関数を使えば具体的な数値を得ることができます。
以下使用例。
#uselib "user32.dll"
#cfunc GetSystemMetrics "GetSystemMetrics" int
#const SM_CYCAPTION $00000004 ;タイトルバーの高さ
#const SM_CXFIXEDFRAME $00000007 ;タイトルバーを持ち、かつ、サイズを変更できないウィンドウの枠の幅
#const SM_CYFIXEDFRAME $00000008 ;タイトルバーを持ち、かつ、サイズを変更できないウィンドウの枠の高さ
#const SM_CXSIZEFRAME $00000020 ;サイズを変更できるウィンドウの枠の幅
#const SM_CYSIZEFRAME $00000021 ;サイズを変更できるウィンドウの枠の高さ
#const SM_CYSMCAPTION $00000033 ;小さなタイトルバーの高さ(ツールウィンドウなどの場合)
mes "タイトルバーの高さ : " + GetSystemMetrics(SM_CYCAPTION)
mes "小さなタイトルバーの高さ : " + GetSystemMetrics(SM_CYSMCAPTION)
mes "サイズを変更できないウィンドウの枠の幅と高さ : " + GetSystemMetrics(SM_CXFIXEDFRAME) + ", " + GetSystemMetrics(SM_CYFIXEDFRAME)
mes "サイズを変更できるウィンドウの枠の幅と高さ : " + GetSystemMetrics(SM_CXSIZEFRAME) + ", " + GetSystemMetrics(SM_CYSIZEFRAME)