[英]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.