中易网

MFC两个编辑框同时滚动

答案:1  悬赏:40  
解决时间 2021-02-17 19:53
MFC两个编辑框同时滚动
最佳答案
实现一个类派生于CEdit,命名为CMyEdit,处理其WM_VSCROLL消息如下:
BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
//{{AFX_MSG_MAP(CMyEdit)
    ON_WM_VSCROLL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CMyEdit::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
    CEdit::OnVScroll(nSBCode,nPos,pScrollBar);
    if(nSBCode == SB_THUMBPOSITION)
        GetParent()->PostMessage(WM_COMMAND,MAKEWPARAM(GetDlgCtrlID(),EN_VSCROLL),(LPARAM)m_hWnd);
}假定第一个编辑框为IDC_EDIT1,第二个为IDC_EDIT2,IDC_EDIT1关联到CMyEdit m_e1变量,IDC_EDIT2关联到CEdit m_e2变量,处理IDC_EDIT1的EN_VSCROLL事件:

CEditm_e2;
CMyEditm_e1;
void CRrrDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRrrDlg)
DDX_Control(pDX, IDC_EDIT2, m_e2);
DDX_Control(pDX, IDC_EDIT1, m_e1);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRrrDlg, CDialog)
//{{AFX_MSG_MAP(CRrrDlg)
ON_EN_VSCROLL(IDC_EDIT1, OnVscrollEdit1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CRrrDlg::OnVscrollEdit1() 
{
int lineCount1 = m_e1.GetLineCount();
int lineCount2 = m_e2.GetLineCount();

int index1 = m_e1.GetFirstVisibleLine();//zero based
if(index1 >= lineCount2)
m_e2.SendMessage(WM_VSCROLL,SB_BOTTOM,NULL);
else
m_e2.SendMessage(WM_VSCROLL,MAKEWPARAM(SB_THUMBPOSITION,index1),NULL);
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
投资肽琦怎么返钱,我想知道投资正大琦肽十万
硬刷激活win7出现的问题
为什么微信无法搜查手机通讯录的好友
靓妆小商品地址好找么,我有些事要过去
求助OG12-59,没找到以前的讨论帖,特来请教
求桃,谷hui li xiang种或者云
发动机噪音比以前大,尤其是踩油门的时候
我适合学机械设计制造及自动化吗
住宿找了一个俩个人家,那个人天天做饭,还有
moonstar地址在什么地方,想过去办事
2015年上海车展什么是专业观众日,公众参观日
如果我掉进了水里但又不会游泳怎么办法呢?旁
女生表白4次,被拒绝了四次
7.8元和8.7元哪个大
海勃湾区的二楼区的小二楼值钱么?是属于平房
推荐资讯
零八年奥运会中国能第一吗
有个男生每天和我用扣扣聊天不过我们只是朋友
液压油管接头24°s是什么意思
DNF大转移后红眼拿什么武器刷图好?
我家蚕宝宝孵出来了一些,但现在没桑叶,要喂
安徽大学生村官:“国家承认的学历”是指什么
上海到苏州汽车票价格是多少钱?
初中化学如何进行有效复习
阴阳师说的狗粮是什么
贵族Baby高端儿童摄影机构地址在哪,我要去那
我知道但是我不说 用英语怎么说?
手关节肿大用什么中药泡最好
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?