ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

プログラムのタイトルバーの「×」を消す方法について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2012-5-18 12:52
Tatara  新米   投稿数: 6
お世話になっております

作成したプログラムのタイトルバーの「×」ボタンだけを消す(効かなくする)方法について、お聞きしたいと思っております。

フォームで指定できる「システムメニュー」をNoにすれば「×」は消せますが、同時に「最小化」「最大化」も消えてしまいますので、こちらを残しつつ「×」だけを消したい(ボタンは残っても不活性化?(グレー状態)になれば)と思っております。

大外になるMagicのタイトルバーの「×」ボタンなどはget.dllを使って制御をするという投稿はこのフォーラムにもされていましたが、作成したプログラム側のタイトルバーのボタンを制御する方法がわからず困っております。

どなたかご存じの方、教えていただけないでしょうか。
よろしくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012-5-22 14:33
hiro  長老 居住地: 三重  投稿数: 188
こんにちは Tataraさん

消す方法はわかりませんが、効かなくすることは
可能だと思います。
イベントロジックでクローズイベントを作成して
何もしないようにすれば無視しますがボタン自体は
あるので違和感があります。
また、クローズイベントを無視させることの弊害が出るかもしれません。

参考になりますか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012-5-28 21:32
Kake  半人前 居住地: 愛媛県松山市  投稿数: 36
既に解決しているかも知れませんが。
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

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約