Code
1//通过创建线程来找子窗口
2VOID ThreadFunc();
3
4DWORD CurThreadID;
5BOOL m_IsOK=TRUE;
6
7void Func()
8{
9 HANDLE hThread;
10 DWORD ThreadID;
11 hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc,NULL,0,&ThreadID);
12 m_CurThreadID=ThreadID;
13}
14
15//线程函数
16VOID ThreadFunc()
17{
18 while(1)
19 {
20 ::EnumWindows(EnumWindowsProc,0);
21 if(m_IsOK)
22 {
23 ::ExitThread(m_CurThreadID);//退出线程
24 m_IsOK=FALSE;
25 break;
26 }
27 }
28}
29
30//EnumWindows回调函数
31BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM IParam)
32{
33 BOOL rtn=TRUE;
34 txt[50];
35 ::GetClassName(hwnd,txt,50);
36 CString clsName=txt;
37 if(clsName=="窗口类型名")
38 {
39 HWND hWndParent=GetParent(hwnd);//找到子窗口的父窗口
40
41 TCHAR title[50];
42 ::PostMessage(hwnd,WM_GETTEXT,0,(LPARAM)title);
43 CString strtitle=title;
44
45 if(hWndParent==::m_hWnd)//如果符合条件
46 {
47 ::m_hwndPageSetup=hwnd;//记录页面设置句柄
48 //设置窗口置前
49 ::SetActiveWindow(hwnd);//置前
50 // 这里可以做处理。
51 m_IsOK=TRUE;
52 rtn=FALSE;
53 }
54 }
55 return rtn;
56}
1//通过创建线程来找子窗口
2VOID ThreadFunc();
3
4DWORD CurThreadID;
5BOOL m_IsOK=TRUE;
6
7void Func()
8{
9 HANDLE hThread;
10 DWORD ThreadID;
11 hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc,NULL,0,&ThreadID);
12 m_CurThreadID=ThreadID;
13}
14
15//线程函数
16VOID ThreadFunc()
17{
18 while(1)
19 {
20 ::EnumWindows(EnumWindowsProc,0);
21 if(m_IsOK)
22 {
23 ::ExitThread(m_CurThreadID);//退出线程
24 m_IsOK=FALSE;
25 break;
26 }
27 }
28}
29
30//EnumWindows回调函数
31BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM IParam)
32{
33 BOOL rtn=TRUE;
34 txt[50];
35 ::GetClassName(hwnd,txt,50);
36 CString clsName=txt;
37 if(clsName=="窗口类型名")
38 {
39 HWND hWndParent=GetParent(hwnd);//找到子窗口的父窗口
40
41 TCHAR title[50];
42 ::PostMessage(hwnd,WM_GETTEXT,0,(LPARAM)title);
43 CString strtitle=title;
44
45 if(hWndParent==::m_hWnd)//如果符合条件
46 {
47 ::m_hwndPageSetup=hwnd;//记录页面设置句柄
48 //设置窗口置前
49 ::SetActiveWindow(hwnd);//置前
50 // 这里可以做处理。
51 m_IsOK=TRUE;
52 rtn=FALSE;
53 }
54 }
55 return rtn;
56}