点击对话框中的按钮创建一个listbox子窗口,listbox位于按钮的中间,即我想让listbox遮住button一半,然后即使鼠标放在button上,listbox也应该在button之上,而不是被button给遮住。这个要怎么做?代码如下: //得到按钮的位置信息
CRect rcBtn;
m_Ctl_Btn_CreateListBox.GetWindowRect(rcBtn);
ScreenToClient(rcBtn); //创建listbox
m_wndListBox.reset(new CListBox());
CRect rcListBox( CPoint(rcBtn.left + rcBtn.Width()/2, rcBtn.top), CSize(40,100) );
m_wndListBox->Create(WS_CHILD|WS_VISIBLE, rcListBox, this, 0x5644); //添加listitem
m_wndListBox->AddString(L"A");
m_wndListBox->AddString(L"B");
m_wndListBox->AddString(L"C");
m_wndListBox->AddString(L"D");
m_wndListBox->AddString(L"E"); //显示
m_wndListBox->ShowWindow(SW_SHOW); //调制listbox的位置,但无法生效?
m_wndListBox->SetWindowPos(
&m_Ctl_Btn_CreateListBox, 
rcListBox.left, 
rcListBox.top, 
rcListBox.Width(), 
rcListBox.Height(), 
SWP_SHOWWINDOW
);

解决方案 »

  1.   


    m_wndListBox->SetWindowPos(
    &CWnd::wndTopMost, 
    rcListBox.left, 
    rcListBox.top, 
    rcListBox.Width(), 
    rcListBox.Height(), 
    SWP_SHOWWINDOW
    );
    这样也不可以!
      

  2.   

    好像如果解决遮挡问题,只能通过建立一个具有WS_POPUP风格的窗口,然后再在该窗口中创建具有
    WS_CHILD风格的listbox才可以!都是WS_CHILD的窗口应该无法做到一致在某一个控件窗口的前面吧,即没有办法置顶吧!
      

  3.   

    m_wndListBox->SetWindowPos
    第一个参数改为HWND_TOP 和 HWND_TOPMOST 都无效么?
      

  4.   


    嗯,都是WS_CHILD的话,这两个参数都无效!
      

  5.   

    同级子窗口是有互相覆盖的问题的,因为它们是平等的。针对你的需求,其实可以派生一个按钮类,这个按钮上有一个listbox子窗口(按钮的子窗口)。
      

  6.   

    可以考虑CreateEx这个ListBox时加上WS_POPUP风格。
    http://bbs.csdn.net/topics/390274670