是否有任何方法可以使DialogProc在不声明为非静态的情况下工作



我已经使用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为静态的情况下使其发挥作用???

它必须是一个静态函数,因为Windows从C代码而不是C++代码调用它。但是,静态函数有几种方法可以检索保存在某个地方的"this"指针,然后使用该指针调用类成员函数。每个适用于Windows的GUI库都能解决这个问题:考虑使用一个。

最新更新