在VC6里用MFC向导创建了一个基于对话框的程序,名子MYD,类名CMYDDLG;
在CMYDDLG类中有一个函数VOID WENJIAN(HWND hwnd);在该程序中,我用WNDPROC   oldWndProc   =   (WNDPROC)::SetWindowLong(hWnd,   GWL_WNDPROC, (LONG)ProcFloat); 对窗口进行了子类化,现在想在消息拦截函数LRESULT CALLBACK ProcFloat(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
(这个函数里要用一些全局的函数)里调用CMYDDLG类中函数WENJIAN,不知怎么调用;
请指教,感谢;

解决方案 »

  1.   

    你的目的是拦截部分消息,并用自己的程序处理消息吗?我觉得既然用MFC来做,那就应该用MFC的方法来实现,重载那个窗口的OnWndMsg就能搞定绝大部分消息,直接在这个函数里面来处理那些消息吧
      

  2.   

    如果hWnd是主窗口的句柄,CWnd::FromHandle,强制转化成主窗口指针,得到指针就能操作成员函数
    或者afxgetmainwnd得到主窗口指针(在这里主窗口指针是CMYDDLG指针,如果不是另算),再指针操作成员函数。
    也可以讲函数声明为静态的
      

  3.   

    该对话框应为程序的主窗口,所以可用如下方法调用其成员函数:hwnd = .....//获取WENJIAN函数实参值。这个取决于楼主的程序
    CMYDDLG* pWnd=(CMYDDLG*)AfxGetMainWnd();//通过获取主窗口指针的方法获取对话框类指针
    pWnd->WENJIAN(hwnd);//调用类成员函数