2009-03-24 9 views
1

コンパクトなフレームワークのappliactionでボタンを閉じる(右上隅のX)タップ(クリック)して自分のアクションを行いたい。私はWindows Mobile 6.1を使用しています。コンパクトなフレームワークのアプライアンスでフッククローズ(X)ボタン

通常はデフォルトの動作が必要ですが、現在のフォームでusercontrolを変更したいことがあります。どうすればそれに到達できますか?

ありがとうございます!

答えて

3

(X)ボタンはではありません閉じるボタン、スマートミニマイズボタンです。直接フックすることはできません(おそらくDeactivatedイベントが発生しますが、キャンセルすることはできません) 。

フォームのMinimizeButtonプロパティをfalseに変更すると、処理できる(ok)ボタンに変わります(Petrosが指摘するように)。おそらく、IMessageFilterを使用するか、フォームをサブクラス化してWinProcをフックして、minimizeイベントを保持することもできます。

も参照してください:

+0

ありがとう、私はMinimizeButtonプロパティを変更して、Closeイベントをフックしようとします。 – TcKs

1

は、私はあなたが何をしたいのか理解していれば:

private void Form1_Closing(object sender, CancelEventArgs e) 
{ 
    e.Cancel = true; 
    //Do my own thing 
} 

あなたは提供とフォームの「閉じる」イベントのイベントハンドラことができます。 e.Cancel = trueとすると、フォームを閉じたくないと言い、それからやりたいことは何でもできます。

+1

MinimizeBox = falseを設定した場合(@ctackeが書き込んだ)、このイベントが発生します。ありがとう。 – TcKs

2

あなたが探している機能がSHDoneButtonです。

SHDB_SHOWCANCELのdwStateを使用して呼び出すと、「Smart Minimize」ボタンの動作がWM_COMMANDメッセージを出力するだけに変更されます。その後、WM_COMMANDメッセージを受信する必要があるのはsetting a custom WndProcです。

+0

質問の ".net"タグに注意してください。 – ctacke

+1

私の知る限り、この問題は純粋な.NETでは解決できません。関連するコールは公開されません。答えは、PInvokeを使用することです。私の「カスタムWndProcを設定する」リンクはC#の投稿であることに注意してください。 – jtdubs

関連する問題