• How to create a resizeable dialog box with scroll bars in Visual C++


    How to create a resizeable dialog box with scroll bars in Visual C++

    http://support.microsoft.com/kb/262954/en-us/

    http://msdn.microsoft.com/en-us/library/bb787531%28v=VS.85%29.aspx#wm_paint 

     GetClientRect(m_rect);
    if(m_rect.bottom<rect.bottom)
    {
        m_rect.bottom = rect.bottom-m_rect.Height();
        SetScrollRange(SB_VERT,0,m_rect.bottom);
        ShowScrollBar(SB_VERT, TRUE);
    }

    void CUsageDisplayTab::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
        // TODO: Add your message handler code here and/or call default
        // TODO: Add your message handler code here and/or call default
        int nDelta;
        int nMaxPos = m_rect.Height() /*- m_nCurHeight*/;

        switch (nSBCode)
        {
        case SB_LINEDOWN:
            if (m_nScrollPos >= nMaxPos)
                return;
            nDelta = min(nMaxPos/100,nMaxPos-m_nScrollPos);
            break;

        case SB_LINEUP:
            if (m_nScrollPos <= 0)
                return;
            nDelta = -min(nMaxPos/100,m_nScrollPos);
            break;

             case SB_PAGEDOWN:
            if (m_nScrollPos >= nMaxPos)
                return;
            nDelta = min(nMaxPos/10,nMaxPos-m_nScrollPos);
            break;

        case SB_THUMBPOSITION:
            nDelta = (int)nPos - m_nScrollPos;
            break;

        case SB_PAGEUP:
            if (m_nScrollPos <= 0)
                return;
            nDelta = -min(nMaxPos/10,m_nScrollPos);
            break;
        
             default:
            return;
        }
        m_nScrollPos += nDelta;
        SetScrollPos(SB_VERT,m_nScrollPos,TRUE);
        ScrollWindow(0,-nDelta);
        CTabPageSSL::OnVScroll(nSBCode, nPos, pScrollBar);
    }


    dynamic created button

    m_cChkbx[i] = new CButton;
    m_cChkbx[i]->Create("",WS_CHILD ,rect ,this, GET_CHEKBOX_ID(i));
    m_cChkbx[i]->SetFont(pChkFont);
    m_cChkbx[i]->SetButtonStyle(BS_AUTOCHECKBOX);
    m_cChkbx[i]->ShowWindow(SW_SHOW);

  • 相关阅读:
    setContentView和inflate区别
    eclipse中自动添加注释(作者,时间)
    ImageLoader must be init with configuration before using
    repo用法详解
    SQL 中的N'xx'的作用
    DataRow复制一行到另一个DataTable
    MS SQL SERVER搜索某个表的主键所在的列名
    Win2008 Server R2个人PC化设置
    C# DataTable的詳細用法
    如何解决arcmap中的反走样问题。
  • 原文地址:https://www.cnblogs.com/cutepig/p/1744360.html
Copyright © 2020-2023  润新知