2012-02-13 14 views
0

私はC++/CLIを使用して、それ以外のネイティブDLLのWPFインタフェースを作成しています。WindowInteropHelperがC++/CLIで構築できない

最小限に抑えることができ、閉じられていないウィンドウを作成したいと考えています。私は検索し、それを行う唯一の方法は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); 

が、winhandle0の値を取得します。 SetWindowLong()呼び出しが無効なハンドルで失敗します。

私はここで間違っていますか?

答えて

1

試してもうまく動作します。ウィンドウには、次のようになります。私は考えることができる

enter image description here

のみ故障モードがネイティブウィンドウが作成される前に、あまりにも早くあなたのコードと呼ばれることです。より多くの作業が必要

private void Window_Loaded(object sender, RoutedEventArgs e) { 
     cpptemp8.Class1.FixWindow(this); 
    } 
:あなたは、これは私のものです、Loadedイベントをする必要があります。最小化ボタンなし、Alt + F4でウィンドウを閉じることができます。

関連する問題