毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

DropDown的Combo控件如何获得控件ID

更新时间:2014-3-27:  来源:毕业论文

这是一个MFC的DIALOG工程。
首先,我需要处理下拉框控件IDC_COMBO1的回车事件,我的方法是:在OnOK函数中,通过switch (pWnd->GetDlgCtrlID())的方式判断当前回车的控件ID是否为IDC_COMBO1,然后进行处理。处理完后,将光标跳转到指定的下一个控件上。

我发现,对于Style是DropList风格的Combo控件,GetDlgCtrlID()可以正确获得控件ID,但是DropDown风格的Combo控件返回的控件ID是不正确的,并且所有的DropDown风格的Combo控件返回的ID都是1001。这样一来,我只能处理一个DropDown风格的Combo控件了,对于第二个、第三个这种控件根本无法处理其回车事件。

注:1、OnOK函数还需要处理另外的很多控件的回车事件。
    2、此处大部分的回车事件都是跳转到指定控件,类似TAB的功能,因为TAB已经被我用为按控件排布顺序跳转,此处用回车实现控件之间的大跳转。
直接在父窗口的PreTranslateMessage里过滤WM_KEYDOWN消息,处理VK_RETURN键不是更简单一些吗?
 CWnd* pWnd = GetNextDlgTabItem(GetFocus());   ASSERT(pWnd);   PostMessage(WM_NEXTDLGCTL, (WPARAM)pWnd->GetSafeHwnd(), TRUE);

PreTranslateMessage里MSG结构体的hwnd参数。
pWnd是当前窗口的句柄,Combo是当前窗口的一个控件。
pWnd->GetDlgCtrlID()可以获得当前窗口上的控件ID,对于EDIT、Static等控件都能正确获得其唯一的ID,但是DropDown风格的Combo控件返回的ID都是1001,这是不正常的。 
 
Combo由edit+list组成。所以:
getfocus如果得到的是edit,那么它的父窗口就是combo。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。