デフォルトではHSPのid0のウィンドウは最大化ボタン(WS_MAXIMIZEBOXスタイル)はついて
いないはずですが...。
WS_MAXIMIZEBOXを意図的につけてそれでも最大化させたくないときはWM_SYSCOMMANDを
捕捉してSC_MAXIMIZEだったら0を返すようにすれば最大化を行えなくできます。
#uselib "user32.dll"
#cfunc GetWindowLong "GetWindowLongA" int, int
#func SetWindowLong "SetWindowLongA" int, int, int
#const WM_SIZE 0x0005
#const WM_ACTIVATE 0x0006
#const WM_SYSCOMMAND 0x0112
#const SC_MAXIMIZE 0xf030
#const GWL_STYLE -16
#const WS_MAXIMIZEBOX 0x00010000
oncmd gosub *OnWmSize, WM_SIZE
oncmd gosub *OnSysCommand, WM_SYSCOMMAND
sz_w = ginfo(20)
sz_h = ginfo(21)
screen 0, sz_w, sz_h, , , , 640,480
ws = GetWindowLong( hwnd, GWL_STYLE ) ; ウインドウスタイル取得
ws = ws | WS_MAXIMIZEBOX | 0x00CF0000 ; 最大化ボタン表示フラグを追加
SetWindowLong hwnd, GWL_STYLE, ws ; ウインドウスタイルを再設定
gsel 0, -1 : gsel 0, 1 ; [最大化ボタン]再描画のため
stop
; サイズ変更があった場合の再描画処理
*OnWmSize
return
; WM_SYSCOMMANDが飛んできたときの処理
*OnSysCommand
; システムコマンドの種類
switch wparam & 0xfff0
; SC_MAXIMIZE(最大化)なら
case SC_MAXIMIZE
return 0
swend
return
でも、最大化ボタンが有効なのに最大化できなくするのはあまりよくないと思いますが...。
最大化ボタンの時は有効にしてタイトルバーDCの時だけ無効にしたいならSC_MAXIMIZEで
マウスカーソル位置を取得してタイトルバー内なら0を返すようにすればできそうな気が
します。
いまは時間がないので詳細に検証できませんのでサンプルは書けません。