Я хочу иметь класс, который создает окно с WinAPI. Функция wndproc должна быть методом указанного класса. Поэтому я нашел способ сделать это (см. Код ниже), но, к сожалению, он не будет компилироваться с VS2013.
Этот код скомпилирован с VS2010 без ошибок или предупреждений.
В моем .h файле:
typedef long(__stdcall* WNDPROC)(void*,unsigned int,unsigned int,long);
class LWindow
{
private:
//...
static LRESULT CALLBACK wndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);public:
LWindow(int width, int height, bool framed);
~LWindow();
//...
};
В моем файле .cpp:
LWindow::LWindow(int width, int height, bool framed)
{
//...
WNDCLASS wc = {0};
wc.lpfnWndProc = wndProc;
//...
}
Сообщение об ошибке
1>l:\opt\microsoft visual studio 12.0\vc\include\xrefwrap(283): error C2064: term does not evaluate to a function taking 0 arguments
Что ж. Теперь, поиграв с этим куском кода в течение почти часа и возясь с линией static LRESULT CALLBACK wndProc...
, поскольку он не дал мне четкого номера строки, я обнаружил, что я включаю некоторые серьезно старые файлы, которые вызывают проблемы.
Спасибо, @edtheprogrammerguy, это был намек, который мне был нужен!
Других решений пока нет …