2014-04-01 62 views
0

我在Windows操作系統上創建窗口時遇到了一個非常奇怪的錯誤。
我正在用下面的代碼部分創建窗口。 這個窗口是另一個應用程序的插件,所以我在其他應用程序提供的窗口內創建一個窗口作爲子窗口。自己添加WS_MINIMIZE標誌

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模式下,所以我無法調試它。
我想問的是 - 有人知道可能會導致這種情況嗎?
另外,有沒有什麼辦法可以在激活之前檢查並更新Windows標誌?

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?

+0

其實它是「,」。謝謝。但它不是在原始代碼中缺失:) –

+2

你如何運行你的發佈應用程序?也許你是從一個已經開始在其屬性中設置最小化的快捷方式運行它? –

+1

當然,你發佈了正確的? 「WS_CHILD」窗口當然不能最小化,那將如何工作?它只能存在於另一個窗口內。 – Damon

回答

0

解決了這個問題。

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

需要被改變到

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