一个空的下拉列表,不管你在设计时,拉得有多长,在运行是,如果没有数据,点下拉箭头,也不会拉出列表来(如果没有使用XP样式,可能下能拉出,不在本文讨论之列)。现在做如下操作:产生一个定时器,比如5秒(关键是让窗口自动变为透明,别无他意),在定时器走满之前,在下拉列表的下拉箭头上点一下鼠标,然后什么也不做,等待。5秒定时器到了后,让窗口变成透明的:
SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(m_hWnd, 0, 85, LWA_ALPHA);
//SetLayeredWindowAttributes函数需要从user32.dll里装载此时观察下拉列表,发现下拉拉出来了,我做了多次实验,发现,其实在点下拉箭头时,下拉列表就已经拉出来了,只是没有显示,不知道为什么,SetLayeredWindowAttributes函数却鬼使神差的将它显示了出来!