BOOL EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
char Wname[80];
::GetWindowText(hwnd,Wname,80);
CListBox* Wlist=(CListBox*)GetDlgItem(IDC_LIST1);
Wlist->AddString(Wname);
return TRUE;
}
这个函数不知道放哪里。
void CMyDlg::OnButton1() 
{
::EnumWindows(EnumWindowsProc,0);//这个函数参数有错,

}
搞得好郁闷,都没有信心学MFC了,比C难学多了

解决方案 »

  1.   

    G:\06\遍历窗口\遍历窗口Dlg.cpp(105) : error C2664: 'EnumWindows' : cannot convert parameter 1 from 'int (struct HWND__ *,long)' to 'int (__stdcall *)(struct HWND__ *,long)'
    就是这个错误
      

  2.   

    直接把
    char Wname[80]; 
    ::GetWindowText(hwnd,Wname,80); 
    CListBox* Wlist=(CListBox*)GetDlgItem(IDC_LIST1); 
    Wlist->AddString(Wname); 
    放到OnButton1()  中。
    MFC简单成马了
      

  3.   

    。enumwindows函数是要有回调函数的
      

  4.   

    嗯,你知道是回调函数啊。
    BOOL CALLBACK EnumWindowsProc(
    这是这个回调函数的类型声明。看看你的。
      

  5.   

    直接放在button那个函数上面也可以
      

  6.   

    BOOL   CALLBACK   EnumWindowsProc_Text(HWND hwnd,LPARAM lParam) 

    CAaDlg* p = (CAaDlg*)lParam;
    char Wname[80]; 
    ::GetWindowText(hwnd,Wname,80); 
    CListBox* Wlist= (CListBox*)(p->GetDlgItem(IDC_LIST1) ); 
    if(strlen(Wname)>1)
    Wlist->AddString(Wname); 
    return TRUE; 
    } void CAaDlg::OnButton16() 
    {
    // TODO: Add your control notification handler code here
    ::EnumWindows(EnumWindowsProc_Text,(LPARAM)this);//这个函数参数有错, }