EnumChildWindows需要调用一个FindChildWnd的回调函数,功能原型我在WIN32 API下运行通过了,
想把它放进MFC对话框程序的菜单函数里...//在CtestDlg.h
public:
BOOL CALLBACK FindChildWnd(HWND hWnd, LPARAM lParam);//在 CTestDlg.cpp
struct HWNDstruct
{
/*一些句柄储存成员*/
}SomeHWND;BOOL CALLBACK FindChildWnd(HWND hWnd, LPARAM lParam)
{
int hWndID;
hWndID = ::GetDlgCtrlID(hWnd);
        /*把匹配ID的hWnd写入到上面的SomeHWND成员中*/
return TRUE;
}void CtestDlg::OnPopStart()
{
HWND HHwnd = ::FindWindow(NULL,_T("Stocker"));
if(HHwnd)
{
 EnumChildWindows(HHwnd,this->FindChildWnd(HHwnd,0),NULL);  //枚举出实时句柄,存入结构
::SendMessage(句柄结构成员,WM_XXX,0,0);                     //发送消息
}似乎遇上了麻烦,编译不通过,看不懂下面这个告警是什么意思
应该如何修改才能在MFC菜单中运行?error C2664: 'ATL::EnumChildWindows' : cannot convert parameter 2 from 'BOOL' to 'WNDENUMPROC'
1>        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

解决方案 »

  1.   

    EnumChildWindows(HHwnd,this->FindChildWnd(HHwnd,0),NULL);  
    -->
    EnumChildWindows(HHwnd,FindChildWnd,NULL);  
      

  2.   


    这个也曾经试过的,有个这样的告警,
    error C3867: 'CTestDlg::FindChildWnd': function call missing argument list; use '&CTestDlg::FindChildWnd' to create a pointer to member
    于是我硬头皮改,
    EnumChildWindows(HHwnd,&CTestDlg::FindChildWnd,NULL);     //枚举出结构句柄
    告警:error C2664: 'ATL::EnumChildWindows' : cannot convert parameter 2 from 'BOOL (__cdecl CTestDlg::* )(HWND,LPARAM)' to 'WNDENUMPROC'-_-...
      

  3.   

    BOOL CALLBACK EnumWindowProc(HWND hWnd, LPARAM lParam)
    {
    TCHAR buf[1024] = {0};
    GetWindowText(hWnd, buf, 1024);
    AfxMessageBox(buf);
    return TRUE;
    }EnumChildWindows(GetSafeHwnd(), EnumWindowProc, NULL);
      

  4.   

    谢谢VisualEleven部长,
    用了
    EnumChildWindows(GetSafeHwnd(),FindChildWnd,NULL);     //枚举出结构句柄不过还是不行呢
    有这样的告警:1>.\TecstDlg.cpp(1053) : error C3867: 'CTestDlg::FindChildWnd': function call missing argument list; use '&CTestDlg::FindChildWnd' to create a pointer to member貌似只能以指针方式,我曾试过做一个指针方式,因为对MFC的整个组织传递方式不是很了解,所以也瞎折腾了
    BOOL CALLBACK FindChildWnd(HWND hWnd, LPARAM lParam)
    不知道如何才能正确地被调入。