ClistCtrl单击某个单元格,滚动条会自动滚动,使单元格完全显示在对话框内。

ClassRoom706 2019-10-14 03:55:47
ClistCtrl单击某个单元格,滚动条会自动滚动,使单元格完全显示在对话框内。

我添加了单击响应函数,做了A操作。

程序运行中,我单击单元格,它做A操作,然后滚动条自己滚动,显示位置移动了,导致我的A操作有了问题;

我想,单击某个单元格,滚动条自己滚动,使单元格完全显示在对话框,之后,做A操作,如何实现?

void OnLbnClkList(NMHDR* pNMHDR, LRESULT* pResult)
{

//A操作:显示了一个编辑控件,但是该函数结束后,滚动条滚动又改变了单元格位置,导致控件位置不正确了。
m_ListCtrl.GetSubItemRect( pNMListView->iItem, pNMListView->iSubItem, LVIR_LABEL, cRectItem );

m_TextEdit.SetParent(&m_ListCtrl);
m_TextEdit.SetWindowText( m_ListCtrl.GetItemText( pNMListView->iItem, pNMListView->iSubItem) );
m_TextEdit.ShowWindow( SW_SHOW );
m_TextEdit.MoveWindow( &cRectItem );
m_TextEdit.SetEditVertCenter();
m_TextEdit.SetFocus();
}

应该解决这个问题呢?
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2019-10-14
  • 打赏
  • 举报
回复
void CListCtrlEx::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CListCtrl::OnVScroll(nSBCode, nPos, pScrollBar);
// move window
// ChangeButtonPos();
// ChangeSliderPos();
ChangeEditPos();// A 操作
}
ClassRoom706 2019-10-14
  • 打赏
  • 举报
回复
引用 2 楼 hurryboylqs 的回复:
EnsureVisible



擦咧,正是我想要的。哭了。原来这样子啊。
hurryboylqs 2019-10-14
  • 打赏
  • 举报
回复
EnsureVisible
ClassRoom706 2019-10-14
  • 打赏
  • 举报
回复
我想在滚动条结束后进行A操作;
ON_NOTIFY( LVN_ENDSCROLL, IDC_LIST,&OnEndScroll)


void OnEndScroll(NMHDR* pNMHDR, LRESULT* pResult)
{
m_ListCtrl.SetFocus();
//A操作
……
……
*pResult = 0;
}

但是,单击单元格,滚动条自动调整,使单元格完全显示,并没有进入上面这个OnEndScroll函数,只有手动拖动滚动条才进入上面的函数。我应该如何处理呢?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧