0

ユーザーが非表示にするのではなく、「X」をクリックしたときに完全に閉じたいWindowsモバイルアプリケーションがあります。

次のメソッドをフォームに追加しましたが、エラーがあります。コードは別の場所からコピーされたもので、正直なところ、フォーム ハンドラーなどを適切に使用する方法がよくわからないので、誰か助けてもらえないだろうか?

protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0005)
{ 
    // WM_SIZE
    if (m.WParam == new IntPtr(0x04))
    { 
        // SIZE_MINIMIZED
        this.Close();
    }
}
base.WndProc(ref m);
}

エラー 1.「型または名前空間名 'Message' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)」

エラー 2.「'System.Windows.Forms.Form' には 'WndProc' の定義が含まれていません」

4

2 に答える 2

1

コンパクト フレームワークのフォームまたはコントロールで WndProc をオーバーライドすることはできません。デスクトップ プロジェクトからコードをコピーしました。コンパクト フレームワークの場合は、もう少し複雑です。多くの場合、 a を使用するだけで、受信するメッセージを確認して対応することができますMessageWindow(例はここにあります)。ただし、完全にサブクラス化する必要がある場合は、もう少し複雑になります。コントロールをサブクラス化する MSDNの例を次に示しますが、フォームも同じです。

于 2012-12-03T17:21:33.963 に答える
1

あなたの特定のケースでは、実際の問題を解決する最も簡単な方法は、のMinimizeBoxプロパティをFormtoに設定することfalseです。これにより、X ボタンが「OK」というテキストの付いた白い円に変わります。そのボタンをタップすると、Quit メッセージを送信してフォームの実行ループを終了します。これは、別の方法でコードを明示的に記述しない限り、通常はプロセスを終了します。

于 2012-12-04T15:49:43.517 に答える