要实现两个RichEdit控件的滚动位置同步,可以采取以下步骤:
下面是一个示例代码,演示如何同步两个RichEdit的滚动位置:
// 假设有两个RichEdit控件的句柄为hSourceRichEdit和hTargetRichEdit
// 获取源RichEdit控件的滚动位置
SCROLLINFO sourceScrollInfo;
sourceScrollInfo.cbSize = sizeof(SCROLLINFO);
sourceScrollInfo.fMask = SIF_POS;
GetScrollInfo(hSourceRichEdit, SB_VERT, &sourceScrollInfo);
int sourceScrollPos = sourceScrollInfo.nPos;
// 将滚动位置应用到目标RichEdit控件上
SCROLLINFO targetScrollInfo;
targetScrollInfo.cbSize = sizeof(SCROLLINFO);
targetScrollInfo.fMask = SIF_POS;
targetScrollInfo.nPos = sourceScrollPos;
SetScrollInfo(hTargetRichEdit, SB_VERT, &targetScrollInfo, TRUE);
RedrawWindow(hTargetRichEdit, NULL, NULL, RDW_INVALIDATE | RDW_ERASE);
// 监听源RichEdit控件的滚动事件
// 在源RichEdit控件的滚动事件处理函数中更新目标RichEdit控件的滚动位置
// 以下代码仅为示例,具体实现需根据实际情况编写
LRESULT CALLBACK SourceRichEditScrollWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
switch (msg)
{
case WM_VSCROLL:
{
// 更新目标RichEdit控件的滚动位置
SCROLLINFO sourceScrollInfo;
sourceScrollInfo.cbSize = sizeof(SCROLLINFO);
sourceScrollInfo.fMask = SIF_POS;
GetScrollInfo(hSourceRichEdit, SB_VERT, &sourceScrollInfo);
int sourceScrollPos = sourceScrollInfo.nPos;
SCROLLINFO targetScrollInfo;
targetScrollInfo.cbSize = sizeof(SCROLLINFO);
targetScrollInfo.fMask = SIF_POS;
targetScrollInfo.nPos = sourceScrollPos;
SetScrollInfo(hTargetRichEdit, SB_VERT, &targetScrollInfo, TRUE);
RedrawWindow(hTargetRichEdit, NULL, NULL, RDW_INVALIDATE | RDW_ERASE);
}
break;
}
return DefSubclassProc(hwnd, msg, wParam, lParam);
}
// 在源RichEdit控件上设置滚动事件处理函数
SetWindowSubclass(hSourceRichEdit, SourceRichEditScrollWndProc, 0, 0);
注意:上述代码仅为示例,具体实现需要根据实际情况进行调整。
此外,若需要在腾讯云上部署相应的云计算服务,可以考虑使用腾讯云的云服务器(CVM)提供计算资源,云数据库(TencentDB)提供数据存储,以及弹性公网IP(EIP)提供网络通信等服务。
前阵子在一个移动项目中,通过 的方式 绑定click 事件来提交一个表单,由于表单信息比较敏感,于是采用的post 同步提交的方式,原本到也没有什么。后来万恶的PM说 “你这个按钮呀,要固定在底部比较好” ,于是乎就通过 position:fixed 固定到底部了。那么,问题来了 , 在ios 下,虚拟键盘是浮在页面上层的,导致的结果是当键盘收起后,浮在最底部的按钮不在最底下,而跑到中间来了,(极端条件下还可能挡住输入框导致无法输入),并且随着屏幕的滚动而滚动,,(表现类似于absolute) ,,高大上的苹果也是真心坑了一回。
领取专属 10元无门槛券
手把手带您无忧上云