14
wpf में मैं उपयोगकर्ता को टाइटल बार खींचकर विंडोज़ को कैसे स्थानांतरित करने से रोक सकता हूं?WPF अक्षम विंडो चलती
wpf में मैं उपयोगकर्ता को टाइटल बार खींचकर विंडोज़ को कैसे स्थानांतरित करने से रोक सकता हूं?WPF अक्षम विंडो चलती
जब से तुम WPF में सीधे एक WndProc
को परिभाषित नहीं कर सकते, तो आप एक HwndSource
प्राप्त है, और यह करने के लिए एक हुक जोड़ने की जरूरत है: आप के लिए
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;
}
ठीक है, +1; मेरे लिए सीखे गए सबक :) –
WndProc वापस क्या करना चाहिए? IntPtr.Zero? – naeron84
यह काम कर रहा है, वापसी मूल्य कोई फर्क नहीं पड़ता। तो IntPrt.Zero बस ठीक है। – naeron84