5

次のような(固定サイズの)ポップアップウィンドウを作成したいと思います。

ポップアップウィンドウ

私のアプリケーションではC#を使用しています。NativeWindowを調べましたが、これが正しい方法かどうかはわかりません。ウィンドウをWindows7のボリュームコントロールまたは「接続」ウィンドウとまったく同じように動作させたい。

どうすればこれを達成できますか?

4

4 に答える 4

4

WinFormsを使用して、フォームを作成し、以下を設定します。

Text = "";
FormBorderStyle = Sizable;
ControlBox = false;
MaximizeBox = false;
MinimizeBox = false;
ShowIcon = false;

編集:

これにはウィンドウがかなり大きい必要がありますが、それを少しごまかすことができます。最小サイズと最大サイズを目的のサイズに設定します。これにより、ユーザーのサイズ変更ができなくなります。

ジェフが提案したように、CreateParamsでもこれを行うことができます。

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        unchecked
        {
            cp.Style |= (int)0x80000000;    // WS_POPUP
            cp.Style |= 0x40000;            // WS_THICKFRAME
        }
        return cp;
    }
}

ただし、どちらの場合も、端にカーソルを合わせるとサイズ変更カーソルが表示されます。それを防ぐ方法がわかりません。

于 2009-05-12T16:02:12.533 に答える
2

CreateParamsで、WS_POPUPとWS_THICKFRAMEを指定します。

于 2009-05-12T16:01:11.833 に答える
2

私はこれを達成することができました:

if (m.Msg == 0x84 /* WM_NCHITTEST */) {
    m.Result = (IntPtr)1;
    return;
}
base.WndProc(ref m);
于 2009-05-22T06:33:15.087 に答える
0

境界線上のカーソルがハンドルWM_NCHITTESTを超え、境界線を超えたときに戻るのを防ぐためHTBORDER

于 2010-01-04T14:54:25.913 に答える