スポンサーサイト

--/--/--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WPFで「閉じるボタン」を非表示にする

2012/03/08

ボタンもタイトルバーも枠も全部消したいって時は、
WindowStyleプロパティにNoneを設定してあげれば全部消えます。

しかし、ウィンドウの閉じるボタンを非表示にして、かつタイトルバーはそのままにしたいことって
たまーーーーーーーーーにありますよね?

http://j08.org/?p=28

こちらのサイト様に載っていたのですがC#のコードが見当たらなかったので翻訳してみました。

VBは触ったことがなかったので入門サイト見ながら翻訳しました。
ですので翻訳ミスがあるかもしれません。

一応欲しかった挙動は得られました。



// classの外に記述
using System.Runtime.InteropServices;
using System.Windows.Interop;


// classの中に記述
[DllImport("user32.dll")]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);

[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd,int nIndex, int dwNewLong);

const int GWL_STYLE = -16;
const int WS_SYSMENU = 0x80000;

protected override void OnSourceInitialized(EventArgs e )
{
base.OnSourceInitialized(e);
IntPtr handle = new WindowInteropHelper(this).Handle;
int style = GetWindowLong(handle, GWL_STYLE);
style = style & (~WS_SYSMENU);
SetWindowLong(handle, GWL_STYLE, style);
}



追記:
閉じるボタンを消すってことはウィンドウの消去を管理したいってことが多いと思います。
例えばプログレスバーを表示しているウィンドウは処理終了時にしか消したくない。とか。

そう考えると実は、上記の閉じるボタンを消しただけでは不十分で[Alt + F4]やらタスクから削除やら色々と消えるパターンが残っています。

http://d.hatena.ne.jp/tomikuma_white_bear/20100905/1283670412

こちらのサイト様に簡単に組み込めるやり方が載っていたので参考にしてください。

コメントの投稿

非公開コメント

advertisement


プロフィール

hane

Author:hane
ゲーム好きなプログラマーやってます。

使用可能言語:C,C++,C#,WPF,JavaScript,Cuda
使用可能開発環境:VisualStudio2005-2013,Unity,CodeWarrior

リンクフリーです
相互リンクなどはこちら↓までかコメント欄にでもよろしくです。
skymail_tt@yahoo.co.jp

検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。