16,472
社区成员
发帖
与我相关
我的任务
分享
//首先写一个回调,用于获得窗体中的控件
BOOL CALLBACK EnumChildProc(HWND hwndChild,LPARAM lParam)
{
TCHAR szClassName[1024]; //ClassName 用于通过句柄获得类名称
GetClassName(hwndChild,szClassName,1024); //GetClassName方法,用于通过句柄获得ClassName
CString str = CString(szClassName); //这个不用说了,就是把TCHART转化成CString,我不知道怎么比较TCHAR,有点笨,所以干脆转化成CString
if (str == "Edit") //找到Edit控件,可能在其他程序中应用的话,不是Edit,这个类名称可以在spy++中查到(还真是不错的工具)
{
//由于需要查找的窗体上有两个Edit,为了区分,我写了这个判断,正好我需要填写的那个Edit是没有下一个空间的向,所以我就直接判断下一个控件为空,如果在其他地方应用,还要灵活处理。
if (GetNextWindow(hwndChild,GW_HWNDNEXT) == NULL)
{
//发送WM_SETTEXT消息,将值填入Edit
SendMessage(hwndChild,WM_SETTEXT, 0,(LPARAM)("user"));
}
}
return TRUE;
}
//这个是我写的一个窗体的按钮事件函数
void COpeaWindowDlg::OnGetWindow()
{
//首先使用FindWindow方法获得窗体,前面说过了,A是类名称,B是title
CWnd* STWnd =FindWindow(A,B);
HWND hStWnd = STWnd->m_hWnd;
//枚举获得子控件,hStWnd是上面获得窗体,EnumChildProc是定义的回调函数(貌似这里很类似函数指针,我是这么理解的),第三个参数我也不知道是什么,就随便写了个NULL
EnumChildWindows(hStWnd,EnumChildProc,NULL);
UpdateData(TRUE);//更新资源,嘻嘻
}