Я хочу иметь класс, который создает окно с WinAPI. Функция wndproc должна быть методом указанного класса. Поэтому я нашел способ сделать это (см. Код ниже), но, к сожалению, он не будет компилироваться с VS2013.
Этот код скомпилирован с VS2010 без ошибок или предупреждений.VS2013 wndProg Метод обратного вызова
В моем файле .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
Проверьте #include и пути. Иногда они различаются между итерациями инструментальных средств компилятора. BTW, на какой линии это происходит? – edtheprogrammerguy
Эта строка в xrefwrap внутри функции вариационного шаблона, невозможно рассказать, как туда попал ваш код. Произошла какая-то ошибка в реализации C++ 11, в VS2013 было много работы. Redeclaring WNDPROC было очень плохой идеей кстати. –
@ HansPassant: Спасибо, я исправлю это. –