1

我已经使用 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 函数而不将其声明为静态?

4

1 回答 1

0

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

于 2013-07-23T07:52:13.770 回答