14
Wpf'de, kullanıcının başlık çubuğunu sürükleyerek pencereleri nasıl hareket ettirmesini engelleyebilirim? Eğer WPF doğrudan WndProc
tanımlayamazsınız yanaWPF pencereyi hareket etmeyi devre dışı bırakma
Wpf'de, kullanıcının başlık çubuğunu sürükleyerek pencereleri nasıl hareket ettirmesini engelleyebilirim? Eğer WPF doğrudan WndProc
tanımlayamazsınız yanaWPF pencereyi hareket etmeyi devre dışı bırakma
, bir HwndSource
edinin ve ona bir kanca eklemeniz gerekir: sizin için
public Window1()
{
InitializeComponent();
this.SourceInitialized += Window1_SourceInitialized;
}
private void Window1_SourceInitialized(object sender, EventArgs e)
{
WindowInteropHelper helper = new WindowInteropHelper(this);
HwndSource source = HwndSource.FromHwnd(helper.Handle);
source.AddHook(WndProc);
}
const int WM_SYSCOMMAND = 0x0112;
const int SC_MOVE = 0xF010;
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
switch(msg)
{
case WM_SYSCOMMAND:
int command = wParam.ToInt32() & 0xfff0;
if (command == SC_MOVE)
{
handled = true;
}
break;
default:
break;
}
return IntPtr.Zero;
}
tamam 1; Dersler benim için öğrenildi :) –
WndProc ne geri vermeli? IntPtr.Zero? – naeron84
Çalışıyor, dönüş değeri önemli değil. Yani IntPrt.Zero sadece iyi. – naeron84