diff --git a/WeaselUI/WeaselUI.cpp b/WeaselUI/WeaselUI.cpp index 53a9b92fe..b9c549b7a 100644 --- a/WeaselUI/WeaselUI.cpp +++ b/WeaselUI/WeaselUI.cpp @@ -83,23 +83,19 @@ VOID CALLBACK UIImpl::OnTimer(_In_ HWND hwnd, } bool UI::Create(HWND parent) { - if (pimpl_) { - pimpl_->panel.Create( - parent, 0, 0, WS_POPUP, - WS_EX_TOOLWINDOW | WS_EX_TOPMOST | WS_EX_NOACTIVATE | WS_EX_TRANSPARENT, - 0U, 0); - return true; + if (!pimpl_) { + pimpl_ = new UIImpl(*this); + if (!pimpl_) + return false; } - pimpl_ = new UIImpl(*this); - if (!pimpl_) - return false; + if (pimpl_->panel.IsWindow()) + return true; - pimpl_->panel.Create( - parent, 0, 0, WS_POPUP, - WS_EX_TOOLWINDOW | WS_EX_TOPMOST | WS_EX_NOACTIVATE | WS_EX_TRANSPARENT, - 0U, 0); - return true; + return pimpl_->panel.Create(parent, 0, 0, WS_POPUP, + WS_EX_TOOLWINDOW | WS_EX_TOPMOST | + WS_EX_NOACTIVATE | WS_EX_TRANSPARENT, + 0U, 0) != nullptr; } void UI::Destroy(bool full) {