首页 > 解决方案 > 单击下拉列表中的内容后Clistbox消失

问题描述

我有一个 A 类是从 Clistbox 继承的,B 类是从 CGXGridWind 继承的。然后,我在 B onCreat 的成员函数中为 A 创建了对象。如下节所述:

int B::onCreat(LPCREATESTRUCT s)
{
    DWORD attribute = WS_CHILD| WS_VISIBLE | WS_BORDER | LBS_NOTIFY | 
    LBS_NOINTEGRALHEIGHT | WS_VSCROLL;
    BOOL bOk = m_Intellilist->Create(
    attribute,
    CRect(0, 0, 0, 0),
    this,                   //  
    IDC_L_INTELLI_LIST);
    //...TODO
}

似乎一切都很好。这件事的意思是,当我在一个单元格中输入一些信息时,Clistbox 会正确显示,我可以选择下拉列表中的项目类似于图片,在此处输入图像描述

尽管如此,还是有一个问题,这个 clistbox 不能出现在这个网格之外。当网格只有一个单元格时,clistbox 将被网格边缘裁剪。该项目只能显示一两个项目。因此,我将 clisbox 附加到对象的某些内容更改为网格父级的窗口。如下代码所示。

int B::onCreat(LPCREATESTRUCT s)
{
    DWORD attribute = WS_CHILD| WS_VISIBLE | WS_BORDER | LBS_NOTIFY | 
    LBS_NOINTEGRALHEIGHT | WS_VSCROLL;
    BOOL bOk = m_Intellilist->Create(
    attribute,
    CRect(0, 0, 0, 0),
    this->GetParent(),  // Or this->GetSafeOwner()   
    IDC_L_INTELLI_LIST);
    //...TODO
}

此更改存在问题,我无法单击项目并选择它,在这种情况下此 clistbox 将消失。

有人可以为我提供帮助吗?

多谢你们!

标签: c++mfc

解决方案


推荐阅读