我有创建了两个列表框窗:的Win32窗口风格重叠问题
_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
}
}
}
这是列表框的外观,当我第一次运行的代码(链表类向右): Listbox Properly Showing http://img.photobucket.com/albums/v204/Shakazahn/ListboxOK_zpsee5c62b9.jpg
如果我点击以显示第一列表框,我也得到: First Listbox Got Infected as Well http://img.photobucket.com/albums/v204/Shakazahn/ListboxNotOK2_zpsc1dca19a.jpg
我试图改变一些窗口的样式但没有任何工作,我也不知道为什么会发生这种情况......对此有任何修复?
编辑:经过一些测试后,我发现这是因为两个Listboxes都是mainWindow的子元素,而不是tabControl窗口。 如果我将两者的parentWindow设置为tabControl,它们显示正常,但我遇到了窗口孙子和许多子类的问题,所以我正在使我的主窗口的所有窗口子项都生效。 我该如何解决这个显示问题?
我把所有的WS_CLIPSIBLINGS,列表框消失。我没有设置任何z顺序,但是我按照TabControl - > ObjectList - > TextureList的顺序创建了它们。我应该用SetWindowPos()改变它还是应该像这样工作? – Danicco 2013-03-03 21:01:05