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);

原文地址:https://www.cnblogs.com/cutepig/p/1744360.html