Winapi 有没有办法让DialogProc在不声明为非静态的情况下工作

Winapi 有没有办法让DialogProc在不声明为非静态的情况下工作,winapi,button,dialog,static-methods,static-members,Winapi,Button,Dialog,Static Methods,Static Members,我使用createDialogParam和DialogProc开发了任何按钮应用程序。首先,我声明DialoProc方法为静态方法,以使每件事情都能正常工作,但现在的情况是,有太多的变量(未全局声明)和函数,我必须在DialogProc函数中使用,现在我想使其非静态,因为使其为静态使我不能实现更多的事情 如果我不声明它是静态的,那么它会产生错误 m_hwndPreview = CreateDialogParam( g_hInst,MAKEINTRESOURCE(IDD_MAINDIALO

我使用createDialogParam和DialogProc开发了任何按钮应用程序。首先,我声明DialoProc方法为静态方法,以使每件事情都能正常工作,但现在的情况是,有太多的变量(未全局声明)和函数,我必须在DialogProc函数中使用,现在我想使其非静态,因为使其为静态使我不能实现更多的事情

如果我不声明它是静态的,那么它会产生错误

    m_hwndPreview = CreateDialogParam( g_hInst,MAKEINTRESOURCE(IDD_MAINDIALOG), m_hwndParent,(DLGPROC)DialogProc, (LPARAM)this);  //('type cast' cannot convert from 'overloaded-function' 
//to 'DLGPROC')

有没有解决方案可以使dialogProc函数不声明为静态的

> P>必须是静态函数,因为Windows从C代码调用它,而不是C++代码。但是静态函数有几种方法可以检索保存在某处的“this”指针,然后使用该指针调用类成员函数。每个可用于Windows的GUI库解决了这个问题:考虑使用一个.< /P>实际上我也在做同样的事情,但是我在调试0x0000 07FEF535203C(AsHeHeleExpReVeWordDand LeReal.Engult:DLL)中遇到了问题:有关更多信息,您可以在此链接上看到此问题-实际上,我必须在DialogPros中访问的是流(通过单击预览处理程序文件创建,以便将其内容存储在缓冲区中,而我无法访问DialogProc中的流变量mpstream)。。。我是这样做的-AMEPreviewHandler*实例=(AMEPreviewHandler*)lParam;实例->m_流;