WS_MINIMIZE标志由其自身添加

时间:2014-04-01 07:11:58

标签: c++ windows winapi visual-studio-2012

我在Windows操作系统上创建窗口时遇到了一个非常奇怪的错误 我正在使用以下部分代码创建窗口。 这个窗口是另一个应用程序中的一个插件,因此我在其他应用程序提供的窗口内创建一个窗口作为子窗口。

newWindow = ::CreateWindow("SomeName",
    "",
    WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_CHILD | WS_VISIBLE,
    in_create_options._location.m_x,
    in_create_options._location.m_y,
    in_create_options._size.m_x,
    in_create_options._size.m_y,
    (HWND)in_create_options._parent,
    0,
    0,
    newView);

但是当窗口被激活时,它也有WS_MINIMIZE标志,因此被激活最小化。问题是,它只发生在RELEASE模式,因此我无法调试它 我想问的是 - 有人知道可能导致这种情况的原因吗? 另外,有什么办法可以在激活前检查和更新窗口标志吗?

P.S。我试过这段代码:

WINDOWINFO currentWindowInfo;
::GetWindowInfo(((WCPluginViewWin *)in_view)->m_nativeView, &currentWindowInfo);
if (currentWindowInfo.dwStyle & WS_MINIMIZE)
{
    currentWindowInfo.dwStyle &= ~WS_MINIMIZE;
    ::AdjustWindowRect(&currentWindowInfo.rcClient, 
}
::ShowWindowAsync(((WCPluginViewWin *)in_view)->m_nativeView, SW_SHOW);

但它仍然无效。窗口仍然以WS_MINIMIZE标志打开。 还有别的东西,而不是AdjustWindowRect?

1 个答案:

答案 0 :(得分:0)

解决了这个问题。

:: ShowWindowAsync(((WCPluginViewWin *)in_view) - > m_nativeView, SW_SHOW );

需要更改为

:: ShowWindowAsync(((WCPluginViewWin *)in_view) - > m_nativeView, SW_SHOWNORMAL );