|
2007/3/3(Sat) 02:52:06|NO.5977
AdjustWindowRectEx()を使って計算してください。
(Windows98が無いので確認できませんが...)
#include "user32.as"
#include "comctl32.as"
#define GWL_STYLE -16
#define GWL_EXSTYLE -20
#define SWP_NOMOVE 2
#define SWP_NOZORDER 4
#define WM_SIZE 5
; 大きめに初期化
screen 0, ginfo_dispx, ginfo_dispy, 2, 0, 0
; 適当に作成
CreateMenu : hMenu = stat
AppendMenu hMenu, 0, 0, "test"
SetMenu hwnd, hMenu
DrawMenuBar hwnd
CreateStatusWindow 0x50000000, "test", hwnd, 0
hStatus = stat
dim rcStatus, 4
GetWindowRect hStatus, varptr(rcStatus)
GetWindowLong hwnd, GWL_STYLE
style = stat
GetWindowLong hwnd, GWL_EXSTYLE
exStyle = stat
bMenu = 1; ウィンドウメニューがあるなら1無ければ0
// ステータスバーはクライアントエリア上に置かれるので高さを足しておく
rect = 0, 0, 640, 480+(rcStatus(3)-rcStatus(1))
AdjustWindowRectEx varptr(rect), style, bMenu, exStyle
SetWindowPos hwnd, 0, 0, 0, rect(2)-rect(0), rect(3)-rect(1), SWP_NOMOVE|SWP_NOZORDER
sendmsg hStatus, WM_SIZE, rect(2)-rect(0), rect(3)-rect(1)
gsel 0,1
;確認
color 255 : boxf
color : boxf 0, 0, 640, 479
stop
|