单个滚动条控制两个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);
    }

}
时间: 2024-09-30 05:55:54

单个滚动条控制两个CEDIT功能的相关文章

控制两个等交替慢慢变亮,慢慢变暗【占空比】

/* 工程创建MCU选取,Atmel 89C55 单片机:STC12C4052AD,STC12C5A60S2 都可以 晶振:12M 功能:控制两个等交替慢慢变亮,慢慢变暗[占空比] 连接说明:LED1正极串接1K 电阻接VCC,负极接到 MCU的P1.7        :LED2正极串接1K 电阻接VCC,负极接到 MCU的P1.6 */ #include <REG51.h> sbit LED1 = P1 ^ 6; sbit LED2 = P1 ^ 7; void DELAY_MS (unsi

操作系统有两个基本功能

操作系统有两个基本功能: 1)防止硬件被失控的应用程序滥用. 2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备. 操作系统通过几个基本的抽象概念(进程.虚拟存储器和文件)来实现这两个功能.如图1-11所示,文件对I/O设备的抽象表示,虚拟存储器是对主存和磁盘I/O设备的抽象表示,进程则是对处理器.主存和I/O设备的抽象表示.

自定义滚动条——控制文字的滚动

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 31.0px Consolas; color: #2b7ec3 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 31.0px Consolas; min-height: 36.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 31.0px Consolas; color: #d74200 } p.p4 {

java,中双精度double控制保留两位小数,js控制两位小数

Java DecimalFormat dcmFmt = new DecimalFormat("0.00"); double db = 12333.353; System.out.println(dcmFmt.format(db)); JS <script type="text/javascript"> //保留两位小数 //功能:将浮点数四舍五入,取小数点后2位 function toDecimal(x) { var f = parseFloat(x);

iOS用UIScorllView实现两指缩放功能

两指缩放功能不仅可以用UIPinchGestureRecognizer手势来实现,还能用UIScorllView来实现,UIScrollView可以轻松的实现最大与最小缩放值,以及滚动的效果.代码如下: #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @property (strong, nonat

怎么用一个显示器来显示和控制两台主机

要实现用一套键盘鼠标显示器来控制两台主机,方法很简单,只需要一个小型的设备来帮助——两个端口的KVM切换器.两个端口的KVM切换器.KA1302 是一个2口线控USB KVM切换器,使用者可将主装置放于桌面下,通过按键Scroll-Lock或通过其外接一个切换按键保留于桌面,即可简单且快速地切换电脑. 工具/原料 一个两口KVM切换器KA1302 一条按键线 在开始安装前,请确认你将连接的所有设备的电源已关闭为避免安装过程造成设备损坏,请先确认所要连接的设备均已适当接地. 将键盘.显示器和鼠标连

是否吞噬触摸点需要控制两个地方

转自:http://blog.csdn.net/wcjwdq/article/details/38901607 是否吞噬触摸点需要控制两个地方: 1)CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, kCCMenuHandlerPriority - 99, true); 当上面语句中的第三个参数为false时,该层不会吞噬触摸点,并且不受后面2)的影响: 当上面语句中的第三个参数为true

JQuery控制两个Div高度一致

<script type="text/javascript"> $(function(){ if($("#left").height() > $("#right").height()){ $("#right").css("height",$("#left").height()); }else{ $("#left").css("height&

LINUX系统服务器上搭建DHCP服务,实现两大基本功能:1,自动分配ip;2,手工指定ip

在linux系统服务器上搭建DHCP服务,实现两大基本功能:1,自动分配ip地址:2,手动指定ip地址.首先准备两台虚拟机作为实验对象,一个linux系统作为服务器,一个windows7系统作为客户机,两者使用同一个虚拟网卡vmnet1,并使用仅主机模式.确定服务器上光盘状态为已连接,使用命令查看并挂载光盘检查dhcp软件包是否安装,若没有则使用rpm进行安装.复制dhcp配置文件的模板,并修改编辑dhcp的配置文件,进行相关设定并保存退出=" alt="LINUX系统服务器上搭建DH