Home > C# > C#トリビアルメモ4 (最大化・最小化などのイベントをフックする)

C#トリビアルメモ4 (最大化・最小化などのイベントをフックする)

  • 2007-10-02 (火) 1:16
  • C#

なんと、HUNTER×HUNTERの新刊出るんですね。しらんかった。

C#で例えば最大化とかのイベントを取得してみます。
FormBorderStyleをtoolwindowとかにしておけば、最大化・最小化ボタンはなくなりますが、タイトルバーをダブルクリックしたり、右クリックから最大化とかを選択したら最大化されてしまいます。
こういうのを無効にしたいときはFormのWndProc()をオーバーライドします。


protected override void WndProc(ref Message m)
{
    const int WM_SYSCOMMAND = 0x0112;
    const int SC_MASK = 0xFFF0;
    const int SC_MINIMIZE = 0xF020;
    const int SC_MAXIMIZE = 0xF030;

    // フォームの最大化・最小化を捕捉したら以降の制御をカットする
    switch (m.Msg)
    {
        case WM_SYSCOMMAND:
            switch (m.WParam.ToInt32() & SC_MASK)
            {
                case SC_MINIMIZE:
                case SC_MAXIMIZE:
                    return;
                    break;

                default:
                    break;
            }
            break;

        default:
            break;                    
    }

    // 基本クラスのメソッドを実行する
    base.WndProc(ref m);
    
}

まー、この辺は完全にWin32APIの話ですが。
どうようにしてSC_MOVEをとれば移動できないようなものもつくれます。

以上

Comments:6

o-taki 07-10-02 (火) 9:55

Form のプロパティの MaximizeBox と MinimizeBox を False にすれば両方とも無効にできますよ。

コスミー 07-10-02 (火) 21:22

そんな簡単にできたのか。知りませんでした。
まあ、記事のようにすると状況に応じて最大化・最小化を無効・有効にできるということで。
RFRの場合、ツールバーのときは無効、ツールバーじゃないときは有効になるように、switchの中にさらにif文分岐してます。

ふりっぱぁ 07-10-24 (水) 15:20

タイトルバーダブルクリックでの
「通常」→「最大化」とか「最大化」→「戻す」が
捕捉できなかったりします…
解決策模索中…

コスミー 07-10-27 (土) 15:31

>タイトルバーダブルクリックでの
>「通常」→「最大化」とか「最大化」→「戻す」が
>捕捉できなかったりします…

あれ?少なくとも「通常」→「最大化」は補足できますよ。タイトルバーをダブルクリックの。

AUKHTCDGAWXERKBTHW 18-09-10 (月) 9:28

I read several good stuff here. Certainly worth bookmarking for revisiting. I surprise how much effort you put to create such a excellent informative website.

Sonia 19-08-01 (木) 14:52

There is certainly a lot to learn about this issue.
I love alll of the points you have made.

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=103
Listed below are links to weblogs that reference
C#トリビアルメモ4 (最大化・最小化などのイベントをフックする) from コスミー報告書[社外秘]

Home > C# > C#トリビアルメモ4 (最大化・最小化などのイベントをフックする)

Search
Feeds
Meta
 合計:015186
 今日:0007 昨日:0155

Return to page top