プログラムのタイトルバーの「×」を消す方法について
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
Tatara
投稿数: 6
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
お世話になっております
作成したプログラムのタイトルバーの「×」ボタンだけを消す(効かなくする)方法について、お聞きしたいと思っております。
フォームで指定できる「システムメニュー」をNoにすれば「×」は消せますが、同時に「最小化」「最大化」も消えてしまいますので、こちらを残しつつ「×」だけを消したい(ボタンは残っても不活性化?(グレー状態)になれば)と思っております。
大外になるMagicのタイトルバーの「×」ボタンなどはget.dllを使って制御をするという投稿はこのフォーラムにもされていましたが、作成したプログラム側のタイトルバーのボタンを制御する方法がわからず困っております。
どなたかご存じの方、教えていただけないでしょうか。
よろしくお願いします。
作成したプログラムのタイトルバーの「×」ボタンだけを消す(効かなくする)方法について、お聞きしたいと思っております。
フォームで指定できる「システムメニュー」をNoにすれば「×」は消せますが、同時に「最小化」「最大化」も消えてしまいますので、こちらを残しつつ「×」だけを消したい(ボタンは残っても不活性化?(グレー状態)になれば)と思っております。
大外になるMagicのタイトルバーの「×」ボタンなどはget.dllを使って制御をするという投稿はこのフォーラムにもされていましたが、作成したプログラム側のタイトルバーのボタンを制御する方法がわからず困っております。
どなたかご存じの方、教えていただけないでしょうか。
よろしくお願いします。
投票数:0
平均点:0.00
hiro
居住地: 三重
投稿数: 188
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは Tataraさん
消す方法はわかりませんが、効かなくすることは
可能だと思います。
イベントロジックでクローズイベントを作成して
何もしないようにすれば無視しますがボタン自体は
あるので違和感があります。
また、クローズイベントを無視させることの弊害が出るかもしれません。
参考になりますか?
消す方法はわかりませんが、効かなくすることは
可能だと思います。
イベントロジックでクローズイベントを作成して
何もしないようにすれば無視しますがボタン自体は
あるので違和感があります。
また、クローズイベントを無視させることの弊害が出るかもしれません。
参考になりますか?
投票数:0
平均点:0.00
Kake
居住地: 愛媛県松山市
投稿数: 36
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
既に解決しているかも知れませんが。
User32.dll(Win32.API)で実現できるはずです。
[×]そのものを消してしまうと、[×]を復元できなくなるので
[×]を無効にするほうが良いと思います。
技術的には
1.ウィンドウハンドル(Winhwnd 関数で取得する。)からシステムウィンドウのハンドルを取得する。
([×]はシステムメニューに属する)
2.[×]を無効にする。
3.システムウィンドウを再表示する。
(無効にした設定内容を反映させる為)
という手順です。
1.は、
calldll ('User32.GetSystemMenu','444',ウィンドウハンドル,0)
2.は、
calldll ('User32.EnableMenuItem','4444',上記1で取得した値,Hval ('F060'),1)
3. は、
calldll ('User32.DrawMenuBar','44',上記1で取得した値)
上記2.の最後のパラメータ(=1)が無効を示しています。
一旦無効にした[×]を有効にするには、上記2.の最後のパラメータを0で1.〜3.を実行すれば良いです。
calldllの戻り値は数値型で10桁用意すれば良いでしょう。
(もちろん、1.〜3.ごとに別々に用意すべきです。)
注意点としては、
・リッチクライアントでは使えません。
・クライアントOSがWindows系である必要があります。
お役に立てば幸いです。
User32.dll(Win32.API)で実現できるはずです。
[×]そのものを消してしまうと、[×]を復元できなくなるので
[×]を無効にするほうが良いと思います。
技術的には
1.ウィンドウハンドル(Winhwnd 関数で取得する。)からシステムウィンドウのハンドルを取得する。
([×]はシステムメニューに属する)
2.[×]を無効にする。
3.システムウィンドウを再表示する。
(無効にした設定内容を反映させる為)
という手順です。
1.は、
calldll ('User32.GetSystemMenu','444',ウィンドウハンドル,0)
2.は、
calldll ('User32.EnableMenuItem','4444',上記1で取得した値,Hval ('F060'),1)
3. は、
calldll ('User32.DrawMenuBar','44',上記1で取得した値)
上記2.の最後のパラメータ(=1)が無効を示しています。
一旦無効にした[×]を有効にするには、上記2.の最後のパラメータを0で1.〜3.を実行すれば良いです。
calldllの戻り値は数値型で10桁用意すれば良いでしょう。
(もちろん、1.〜3.ごとに別々に用意すべきです。)
注意点としては、
・リッチクライアントでは使えません。
・クライアントOSがWindows系である必要があります。
お役に立てば幸いです。
投票数:0
平均点:0.00