码迷,mamicode.com
首页 > 其他好文 > 详细

单个滚动条控制两个CEDIT功能

时间:2015-05-14 18:40:58      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:vc++   cedit技巧   

有时候需要实现单个滚动条控制两个CEDIT功能,控制中间的滚动条左右能同时翻动,
如下图
技术分享

实现方法大致如下
创建两个EDIT控件,都带滚动条,但是右侧的要隐藏

void CAlignSentenceView::OnInitialUpdate()
{
    CView::OnInitialUpdate();
    CRect rect;
    GetClientRect(&rect);

    // TODO: 在此添加专用代码和/或调用基类
    m_etCH.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
        ES_AUTOVSCROLL, CRect (0, 0, rect.Width()/2, rect.Height()), this, IDC_EDIT_CH);


    m_etEG.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
        ES_AUTOVSCROLL, CRect (rect.Width()/2, 0, rect.Width(), rect.Height()), this, IDC_EDIT_EG);

    m_etCH.SetLimitText(UINT_MAX);
    m_etEG.SetLimitText(UINT_MAX);

    //右侧英文编辑框隐藏滚动条
    m_etEG.ShowScrollBar(SB_VERT, FALSE);


}

EDIT控件是自己建立的,从CEDIT派生,在里面添加响应函数

BEGIN_MESSAGE_MAP(CAlignEdit, CEdit)
    ON_WM_VSCROLL()
END_MESSAGE_MAP()


void CAlignEdit::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    CEdit::OnVScroll(nSBCode, nPos, pScrollBar);

    CMainFrame*   pFrame=(CMainFrame*)AfxGetMainWnd();   
    CAlignSentenceView* pView = (CAlignSentenceView*)pFrame->GetActiveView();

    //这里判断是否是英文对话框,防止形成调用环
    if (this != &(pView->m_etEG))
    {
        pView->m_etEG.OnVScroll(nSBCode, nPos, pScrollBar);
    }



}

单个滚动条控制两个CEDIT功能

标签:vc++   cedit技巧   

原文地址:http://blog.csdn.net/lampqiu/article/details/45724031

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!