如何获得对话框子窗口的句柄??用AfxGetMainWnd可以获得主窗口的句柄。
void ASEnumWnd::OnBUTTONEnumWnd()
{
m_WndListBox.ResetContent(); //一次清空
if (!::EnumWindows((WNDENUMPROC)enumProc, 0))
AfxMessageBox("Error");
Invalidate(true);
}
//枚举当前所有窗口并显示在ListBox中.
BOOL CALLBACK enumProc(HWND hwnd, LPARAM lParam)
{
if (hwnd == NULL)
return FALSE;
if (::IsWindow(hwnd) && ::IsWindowVisible(hwnd) )
{
TCHAR szCap[255] = {0};
::GetWindowText(hwnd, szCap, 255);
ASEnumWnd *pDlg = (ASEnumWnd*)::FindWindow(NULL, "程序列表");
//?????
pDlg->m_WndListBox.AddString(szCap);
}
return TRUE;
}
我本想通过这句获得该窗口的句柄,但是程序运行总是报错,直接就终止了。
ASEnumWnd *pDlg = (ASEnumWnd*)::FindWindow(NULL, "程序列表");
是否FindWindow这样转换后丢失了一些信息?
原来是用AfxGetMainWnd实现的,现在这个对话框是通过主窗口调用显示的,所以不能再用它了。
应该换成什么呢??