duilib combo 滚动条不起作用

试试这个版本的 combo 呱呱,出现问题了, 竟然没有滚动条,以前没发现。。。
这里写图片描述
属性设置了hscorllbar=”true” vscrollbar=”true” 然并软。。

于是跟了下代码,发现 其实 是有调用 滚动条,但是 没有资源,,

很自然的进入  CComboUI::DoPaint  没发现啥然后发现
 CComboWnd* m_pWindow;这个变量。
 继续研究发现
 LRESULT CComboWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if( uMsg == WM_CREATE ) {
        m_pm.SetForceUseSharedRes(true);
        ...
        }
        ...
       else if( uMsg == WM_CLOSE ) {
        m_pOwner->SetManager(m_pOwner->GetManager(), m_pOwner->GetParent(), false);
        if( !m_pOwner->IsFloat() ) m_pOwner->SetPos(m_pOwner->GetPos(), false);
        else m_pOwner->SetPos(m_pOwner->GetRelativePos(), false);
        m_pOwner->SetFocus();

看来是找到了 ,发现重点是 m_pLayout->EnableScrollBar(); 里面设置了 滚动条默认开启,
但是资源是空的,哈哈,原来是 CPaintManagerUI m_pm, 这个变量的问题了,
那既然定位到了 原因,那离结果就不远了。

修改代码如下,即可。

    if( uMsg == WM_CREATE ) {
        m_pm.SetForceUseSharedRes(true);
        m_pm.Init(m_hWnd);
        // The trick is to add the items to the new container. Their owner gets
        // reassigned by this operation - which is why it is important to reassign
        // the items back to the righfull owner/manager when the window closes.
        m_pLayout = new CComboBodyUI(m_pOwner);
        m_pLayout->SetManager(&m_pm, NULL, true);

        LPCTSTR scroll_bar_value = m_pOwner->GetManager()->GetDefaultAttributeList(_T("HScrollBar"));
        if (scroll_bar_value) {
            m_pm.AddDefaultAttributeList(_T("HScrollBar"), scroll_bar_value);
        }
        scroll_bar_value = m_pOwner->GetManager()->GetDefaultAttributeList(_T("VScrollBar"));
        if (scroll_bar_value) {
            m_pm.AddDefaultAttributeList(_T("VScrollBar"), scroll_bar_value);
        }

即在create的时候,设置HScrollBar 和 VScrollBar 。
效果如下:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值