我有一个
Windows
课程如下:
struct PlatformState
{
HINSTANCE hInstance;
HWND WindowHandle;
};
class Win32Platform
{
public:
Win32Platform(const char* app_name, uint32 startX, uint32 startY, uint32 width, uint32 height);
~Win32Platform();
private:
PlatformState* PlatState;
const char* AppName;
uint32 StartPosX;
uint32 StartPosY;
uint32 Width;
uint32 Height;
LRESULT CALLBACK Win32ProcessMessage(HWND window_handle, uint32 msg, WPARAM w_param, LPARAM l_param);
};
当我尝试创建这样的构造函数时:
Win32Platform::Win32Platform(const char* app_name, uint32 startX, uint32 startY
, uint32 width, uint32 height)
: AppName(app_name), StartPosX(startX), StartPosY(startY), Width(width), Height(height)
{
PlatState = nullptr;
PlatState = (PlatformState *)malloc(sizeof(PlatformState));
PlatState->hInstance = GetModuleHandleA(0);
//Setup and Register Window Class
HICON icon = LoadIcon(PlatState->hInstance, IDI_APPLICATION);
WNDCLASSA WinClass;
WinClass.style = CS_DBLCLKS;
WinClass.lpfnWndProc = this->Win32ProcessMessage;
}
驱动程序代码基本上是:
Win32Platform window{"New", 100, 200, 1280, 720};
获取错误信息
指向绑定函数的指针只能用于调用该函数
我需要函数
Win32ProcessMessage
作为成员函数,因为我需要它来访问某些类实例变量。我尝试了有和没有this
。
我该如何解决这个问题?
您不能使用 non-static 类方法作为 Win32
WndProc
回调,因为它具有 API 无法解释的隐藏 this
参数。
您需要使用static类方法,或独立函数。使用
lpParam
的 CreateWindow/Ex()
参数将对象的 this
指针传递到回调中。