UWSCに最小化ボタンをつける
以前、最小化させたいという質問があったのを思い出した。
UWSC v5.0でウインドウががらっと変わったので、もしかして、と思って、、、
今手元の環境でやったら、できた。
DEF_DLL GetWindowLongW(dword, int): long: user32 DEF_DLL SetWindowLongW(dword, int, long): long: user32 CONST GWL_STYLE = -16 DIM hnd = IDTOHND(GETID(GET_THISUWSC_WIN)) SetWindowLongW(hnd, GWL_STYLE, GetWindowLongW(hnd, GWL_STYLE) OR $20000)
以下余談。
解説
標準のウインドウであれば、ウインドウスタイルを変更するだけで、最小化ボタンの表示・非表示は制御できます。
ウインドウスタイルの変更は、SetWindowLong関数でGWL_STYLEを指定することで行います。
(拡張スタイルの場合は、GWL_EXSTYLE)
現在のウインドウスタイルは、GetWindowLong関数で取得できます。
最小化ボタンは、WS_MINIMIZEBOX($20000)のビットが立っているかで制御されます。
なお、最大化ボタンは、WS_MAXIMIZEBOX($10000)。
両方を立てる($30000)と、両方が表示されることになります。
最大化ボタンはあってもあんまり嬉しくないけど。(動作はします)
最小スクリプト
最小は2行かな。
SetWindowLong関数が変更前の値を返すことを利用して、GetWindowLong関数の肩代わり。
DEF_DLL SetWindowLongW(dword,int,long):long:user32 SetWindowLongW(IDTOHND(GETID(GET_THISUWSC_WIN)),-16,SetWindowLongW(IDTOHND(GETID(GET_THISUWSC_WIN)),-16,0)OR $20000)
ま、こんなせこいことはしないで、素直に最初に書いた5行を使ってください。