MFC 如何遍历窗口控件ID

来源:互联网 发布:3阶矩阵的逆怎么求 编辑:程序博客网 时间:2024/04/28 02:26

对知识点的总结延迟了一天,昨天本应该完成的任务弄到今天才完成,心里多少有些小疙瘩。

好了,言规正传。

任务是:如何遍历一个窗体中所有控件的ID?

首先是对这里谈到的ID的理解,这里的ID指的是Resource.h中 #define IDC_BUTTON2       1002中的1002,如果你不对它自定义,系统会自动给你提供一个相应的唯一的值。

它的作用是给窗体一个唯一的标识,当我们要对该窗体做操作时必须用到它,像我们每个人都会有一个名字,别人让我去做什么,首先得定位到我,即通过一个标识,他一说这个

标识我就知道叫的是我,原理都是这样,但方式可以不一样。

该ID的应用:窗口指针的初始化

例如:

CButton*  pButton;

pButton = (CButton*)GetDlgItem(IDC_BUTTON2);

-pButton20x00384da0 {CTempWnd hWnd=0x000103c4}
+ [CTempWnd] {CTempWnd hWnd=0x000103c4}
+ CWnd {CWnd hWnd=0x000103c4}           

请问这里对应的每一个地址该怎么理解?

GetDlgItem   返回窗口中指定参数ID的子元素的句柄,可以通过返回的句柄对窗口内的子元素进行操作。

void CCtrlListDlg::CtrlID()
{
CWnd* pwnd = FindWindow(NULL,"CtrlList");
        int nCtrlID = 0;
CWnd* pChildWnd = pwnd->GetWindow(GW_CHILD);  //GW_HWNDFIRST  //GW_CHILD
while(pChildWnd != NULL)
{        
nCtrlID=pChildWnd->GetDlgCtrlID();      //ID号与资源匹配
pChildWnd = pChildWnd->GetWindow(GW_HWNDNEXT);
}
}

这里应用上了三个很重要的方法即:FindWindow,GetWindow和GetDlgCtrlID改天再对这些函数逐个分析。

原创粉丝点击