HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0825
とすてダブルクリック処理の無効化2未解決


とすて

リンク

2006/8/25(Fri) 11:19:05|NO.2135

ウィンドウのタイトルバーをダブルクリックすると、最大化されます。
これを無効化することはできますか?
ダブルクリックしても、最大化しないように(何も起らない)したいです。
というのも、自作のソフトでタイトルバーをダブルクリックしたウィンドウに対して
いろいろと操作を行いたいからです。



この記事に返信する


Irisawa

リンク

2006/8/25(Fri) 15:51:15|NO.2141

デフォルトでは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を返すようにすればできそうな気が
します。
いまは時間がないので詳細に検証できませんのでサンプルは書けません。



とすて

リンク

2006/8/26(Sat) 17:43:23|NO.2159

HSPのウィンドウに限らず、全てのウィンドウに対して行えるようにしたかったのですが、
とりあえず参考にはなると思います。ありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.