次の方法で共有


Window位置の固定

質問

2015年7月30日木曜日 5:14

初歩的質問であれば、申し訳ありません。

WPFでアプリケーションを作成しているのですが、最初にWindowを表示した位置からWindowの位置を変更させたくないのですが、

どのようにすれば表示位置を固定できますでしょうか。

以上、よろしくお願い致します。

すべての返信 (2)

2015年7月30日木曜日 5:38 ✅回答済み

こんにちは。

移動禁止にしたいという意味でしたか?それとも初期表示位置を指定したいという意味でしたか。

初期表示位置については調べたらたくさん見つかりました。

移動禁止であれば、WinFormみたいにWindowメッセージで移動系を補足してやってみてはどうでしょう。

参考:http://jeanne.wankuma.com/tips/csharp/form/moveable.html

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    const int WM_SYSCOMMAND = 0x0112;
    const int SC_MOVE = 0xF010;
    const int SC_MASK = 0xFFF0;

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
        source.AddHook(new HwndSourceHook(WndProc));
    }

    private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
    {
        if ((msg == WM_SYSCOMMAND) && ((wParam.ToInt32() & SC_MASK) == SC_MOVE))
        {
            handled = true;
        }
        return IntPtr.Zero;
    }
}

2015年7月31日金曜日 7:44

Tak1wa様

丁寧な回答頂きありがとうございました。

自分の想定していた動きを実現することができました。

ありがとうございました。