Я использую C ++ / CLI для создания интерфейса WPF для в противном случае собственной библиотеки DLL.
Я хочу создать окно, которое можно свернуть, но не закрыть. Я искал и обнаружил, что единственный способ сделать это через вызовы WIN32. Итак, я использую следующий код.
// window_ is a Window ^ initialized from XAML and checked against nullptr
// its WindowStyle is SingleBorderWindow
System::Windows::Interop::WindowInteropHelper helper(window_);
IntPtr winhandle = helper.Handle;
void * winhandleptr = winhandle.ToPointer();
HWND hWnd = static_cast<HWND>(winhandleptr);
SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) & ~WS_SYSMENU);
, но winhandle
получает значение 0
. Вызов SetWindowLong()
завершается неудачно с неверным дескриптором.
Что я здесь не так делаю?