Int GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount);函数的第一个参数可用窗口ID号吗?
就是有这样一句:GetWindowText(IDC_EDIT1,ch1,10);中第一个参数给了一个控件的ID号,应该是窗口句柄啊,这是为什么?……高手能不能解释一下,I...
就是有这样一句:GetWindowText(IDC_EDIT1,ch1,10);中第一个参数给了一个控件的ID号,应该是窗口句柄啊,这是为什么?……高手能不能解释一下,ID号和句柄在此有什么联系吗?……请高手给具体解释下,谢了!
展开
2个回答
展开全部
这句代码所在的那个类肯定把GetWindowText重载了。
控件ID不能直接转换成窗口句柄,必须用GetDlgItem函数来转换
控件ID不能直接转换成窗口句柄,必须用GetDlgItem函数来转换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HANDLE(句柄)是windows操作系统中的一个概念。指的是一个核心对象在某一个进程中的唯一索引,而不是指针。
由于地址空间的限制,句柄所标识的内容对进程是不可见的,只能由操作系统通过进程句柄列表来进行维护。
句柄列表: 每个进程都要创建一个句柄列表,这些句柄指向各种系统资源,比如窗口、菜单、控件,线程,和文件等,进程中的所有线程都可以访问这些资源
handle在整个windows中是唯一的,而id在最小的范围内是唯一的
ID跟handle不同
handle可以直接在所有程序中应用,因为它是整个windows系统的资源。
但id却只可以从最小范围内使用,它只属于最小范围内的资源。
如对话框窗口控件的ID只在该对话框有效
其他对话框窗口也可能有控件的ID值跟它相同
所以,通过控件ID获得控件句柄时,要指定所在的对话框
HWND GetDlgItem(//通过ID 获得句柄
HWND hDlg, //对话框窗口的句柄,ID只是在该对话框窗口唯一
int nIDDlgItem //控件的ID
);
int GetDlgCtrlID(//通过句柄获得ID
HWND hwndCtl //控件句柄
);
由于地址空间的限制,句柄所标识的内容对进程是不可见的,只能由操作系统通过进程句柄列表来进行维护。
句柄列表: 每个进程都要创建一个句柄列表,这些句柄指向各种系统资源,比如窗口、菜单、控件,线程,和文件等,进程中的所有线程都可以访问这些资源
handle在整个windows中是唯一的,而id在最小的范围内是唯一的
ID跟handle不同
handle可以直接在所有程序中应用,因为它是整个windows系统的资源。
但id却只可以从最小范围内使用,它只属于最小范围内的资源。
如对话框窗口控件的ID只在该对话框有效
其他对话框窗口也可能有控件的ID值跟它相同
所以,通过控件ID获得控件句柄时,要指定所在的对话框
HWND GetDlgItem(//通过ID 获得句柄
HWND hDlg, //对话框窗口的句柄,ID只是在该对话框窗口唯一
int nIDDlgItem //控件的ID
);
int GetDlgCtrlID(//通过句柄获得ID
HWND hwndCtl //控件句柄
);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询