У меня есть два класса, Win32 и Engine. Я пытаюсь передать мою функцию WindowProc из класса Engine в класс Win32. Я знаю, что ЬурейиЙ WNDPROC объявлен как:Передача нестатического указателя функции на другой класс?
typedef LRESULT(CALLBACK *WNDPROC)(HWND, UINT, WPARAM, LPARAM);
заголовок
Моего Win32 объявлен как:
// Win32.h
#include <Windows.h>
class Win32
{
public:
Win32() {};
~Win32() {};
void Initialize(WNDPROC);
private:
// Route messages to non static WindowProc that is declared in Engine class.
static LRESULT CALLBACK MessageRouter(HWND, UINT, WPARAM, LPARAM);
};
И мой класс двигателя объявлен как:
// Engine.h
#include "Win32.h"
class Engine
{
public:
Engine() {};
~Engine() {};
void Initialize();
private:
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
Win32* m_win32;
};
// Engine.cpp
#include "Engine.h"
void Engine::Initialize()
{
m_win32 = new Win32;
m_win32->Initialize(&WindowProc); // How can I pass this function without making
// it static or global.
}
Моего Win32 класс уже имеет статический MessageRouter, который предоставляется WNDCLASSEX. Поэтому мой вопрос заключается в том, как передать функцию Engine :: WindowProc классу Win32 без объявления его статическим или глобальным?
У этого есть пять параметров, а 'WNDPROC' имеет четыре. Как вы планируете справиться с этим? – chris