关于网友提出的“ CDialog对话框中CCombox元素的GetFocus返回的ID始终是1001,好奇怪”问题疑问,本网通过在网上对“ CDialog对话框中CCombox元素的GetFocus返回的ID始终是1001,好奇怪”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: CDialog对话框中CCombox元素的GetFocus返回的ID始终是1001,好奇怪
描述: 我在改一个程序,动态修改一个对话框界面上元素的位置,自然Tab Order的顺序也要做动态改动,我就要用GetFocus()来判断当前焦点的位置,可是我发现焦点在编辑框和按钮上时没有问题,一旦焦点在CCombox框上,GetFocus()的返回就有问题,用 UINT nCurrentItem = GetFocus()->GetDlgCtrlID();返回的值始终是1001,我的界面上有两个CCombox,两个的返回值都是1001,实际上一个是113,一个是114。GetFocus()的返回是什么TmpWnd,实在是搞不懂?
可以提供什么线索吗?或者有什么办法在程序里动态调整Tab Order?
解决方案1: A combo box consists of a list box combined with either a static control or edit control.
GetFocus返回的是combo box中的Edit的CWnd指针。
修改你的程序的最后一句,
pWnd = GetFocus()->GetParent();
你就会发现pWnd和pWnd1相同了。
另外,
UINT nCurrentItem = GetFocus()->GetParent()->GetDlgCtrlID();
这一句可以得到combo box的ID。
解决方案2: CCombox本身也是组合的,返回的应该是它里面的Edit的ID,所以是一样的。
如果想调整的话,直接根据CtrlID索引好了
以上介绍了“ CDialog对话框中CCombox元素的GetFocus返回的ID始终是1001,好奇怪”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2761703.html