簡體   English   中英

Win32窗口樣式重疊問題

[英]Win32 Window Styles Overlap Issue

我有兩個通過以下方式創建的列表框窗口:

_objectList = CreateWindow("LISTBOX", NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD | LBS_SORT, 5, 50, 10, 50, _windowParent, NULL, _windowInstance, 0);
_resourceList = CreateWindow("LISTBOX", NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD | LBS_SORT, 5, 50, 10, 50, _windowParent, NULL, _windowInstance, 0);

ShowWindow(_objectList, 1);
ShowWindow(_resourceList, 0);

它們位於TabControl框中,當我單擊一個選項卡時,我要顯示一個/隱藏另一個。 我這樣做是:

//In the message proc function
if(uMsg == WM_NOTIFY)
{
    if(((LPNMHDR)lParam)->code == TCN_SELCHANGE)
    {
        if(((LPNMHDR)lParam)->hwndFrom == _tabControl.GetWindowHandle())
        {
            int index = SendMessage(_tabControl.GetWindowHandle(), TCM_GETCURSEL, 0, 0);
            _tabControl.showTab(index); //this function will call the ShowWindow(); to show only the tab I'd like to display
        }
    }
}

這是我第一次運行代碼(右側的ObjectList)時列表框的外觀: 列表框正確顯示http://img.photobucket.com/albums/v204/Shakazahn/ListboxOK_zpsee5c62b9.jpg

這是當我單擊選項卡時: 列表框突然變丑了http://img.photobucket.com/albums/v204/Shakazahn/ListboxNotOK_zps5d05a019.jpg

如果單擊以顯示第一個列表框,我也會得到: 第一個列表框也被感染http://img.photobucket.com/albums/v204/Shakazahn/ListboxNotOK2_zpsc1dca19a.jpg

我嘗試更改某些窗口樣式,但沒有任何效果,而且,我不知道為什么會發生這種情況……對此有任何解決辦法嗎?

編輯 :經過一些測試,我發現這是因為兩個列表框都是mainWindow的子級,而不是tabControl窗口的子級。 如果將兩者的parentWindow都設置為tabControl,它們將顯示正常,但是我遇到了窗口孫子項和大量子類化的問題,因此我將所有Windows子窗口都作為主窗口的子項。 如何解決此顯示問題?

在兩個列表框和選項卡控件上設置WS_CLIPSIBLINGS樣式,並確保z順序使得兩個列表框在選項卡后繪制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM