win32如何触发一个窗口中listcontrol控件的单击事件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win32如何触发一个窗口中listcontrol控件的单击事件?相关的知识,希望对你有一定的参考价值。
该窗口的事件是由dialogproc实现的,如果在该函数内使用WM_LBUTTONDOWN即可触发单击事件,但如果单击在listcontrol控件上则不行,如何触发listcontrol控件上的单击事件?
参考技术A 获取listcontrol的句柄向其发送消息本回答被提问者采纳验证列表控件就地编辑
【中文标题】验证列表控件就地编辑【英文标题】:Validating List Control In-Place Edit 【发布时间】:2018-05-07 07:03:25 【问题描述】:在我的列表控件中,我有适当的编辑控件。
在编辑控件的 killfocus 事件中,我正在验证文本。
我的要求是在单击 listcontrol 的滚动条时,我应该使用旧文本进行验证(它的行为应该像 esc 键)
在我的应用程序中,当单击 listcontrol 的滚动条时,会触发编辑控件的 killfocus 事件,并且正在使用当前文本验证文本。
如何验证旧文本?
谢谢。
【问题讨论】:
WM_KILLFOCUS is the wrong time to do field validation. @IInspectable 何时对列表控件中的就地编辑控件进行验证? 您的问题有一个答案可以准确解释何时进行输入验证。 在那个链接中,他们提到应该在单击确定按钮时完成对话框验证,但就我而言,我无法从该链接中得到任何想法。 该链接还解释了在WM_KILLFOCUS
处理期间完成输入验证会导致什么问题。这些问题也适用于您的情况。我还评论说,您已经收到了一个答案,显示了一个可行的输入验证通知。
【参考方案1】:
当您收到LVN_BEGINLABELEDIT
时,您也会收到LVN_ENDLABELEDIT 通知。根据您的需要返回 TRUE 或 FALSE。
【讨论】:
要检查焦点是否在列表控件的滚动条上,我尝试了下面的代码,但 pScroll 始终为 NULL。 CListCtrl* pList = ((CListCtrl*)GetParent()); CWnd* pScroll = PList->GetScrollBarCtrl(SB_VERT);如何获取列表控件的滚动条窗口句柄? 滚动条嵌入在列表控件中,与列表控件本身没有不同的焦点。 如何获取列表控件除标题和滚动条外的矩形? GetClientRect!?你问的是基础。这不是讨论任何发展的论坛。请阅读 SO 的指导方针,并了解 Windows 编程的基础知识。以上是关于win32如何触发一个窗口中listcontrol控件的单击事件?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ListControl(ListView) 中检索数据?
MFC使用ListControl时,第一次左键点击ListControl的列表时无法触发NM_CLICK消息,点击第二次时才能触发