none
Win32 и WPF RRS feed

  • Общие обсуждения

  • Добрый день.

    Есть сторонне SDK предоставляющее API на С++. Хотим использовать в нашем WPF приложении для этого создали сборку на С++\CLI  как обёртку для этого API из нашего приложения вызываем SDK.Start() и открывается новое окно  в окне есть основной контент и ToolBar который исчезает если окно не активно. Мы хотим добавить  дополнительную кнопку в этот ToolBar к сожалению API не предоставляет такую функциональность, поэтому используя EnumChildWindows нахожу hWnd этого окна, его основного контента и ToolBar -а. после этого создаю WPF window с кнопкой внутри  беру его hWnd и передаю в C++

    (код на C++ ) изменяю стиль чтобы wpfWindow  был без рамки

    int style = GetWindowLong(wpfWindowHWND, GWL_STYLE);
    style = style & ~WS_CAPTION & ~WS_THICKFRAME;
    SetWindowLong(wpfWindowHWND, GWL_STYLE, style);
    SetWindowPos(wpfWindowHWND, 0, 0, 0, 100, 60, SWP_NOZORDER | SWP_NOACTIVATE);
    SetParent(wpfWindowHWND, основнойКонтентhWnd);

    после в C# вызываю wpfWindow.Show() и всё работает замечательно. Теперь делаю тоже самое но хочу поместить не в основной контент а в ToolBar

     и мой wpfWindow не видим он становится видимым только после того как я кликаю мышкой по тому месту где мой wpfWindow и моя кнопка становится видимым. Пробую не менять стиль для wpfWindow только SetParent(wpfWindowHWND, toolbarWnd) и рамка окна нормально отрисовывается с прозрачной внутренностью снова кликаю мышкой на внутренность и моя кнопка становится видимым. Может кто-то сталкивался с таким?  



    23 декабря 2016 г. 9:50

Все ответы