Проблема с объявлением WNDPROC, преобразование с C на C ++

StackOverflow https://stackoverflow.com/questions/1399051

  •  22-09-2019
  •  | 
  •  

Вопрос

Я конвертирую программу с C на C ++.У меня есть компилятор, настроенный на использование соглашения о вызове __fastcall по умолчанию.

Раньше у меня была строка объявления следующего вида:

INT32 PASCAL graph_window_handler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

Позже у меня есть:

wndclass.lpfnWndProc    = graph_window_handler;

Все это скомпилировано и работало под управлением C.Но в C ++ я получаю всевозможные жалобы от компилятора по поводу второй строки кода.Я предполагаю, что мне нужно изменить исходное объявление на что-то, связанное с WNDPROC, возможно, с добавлением _cdecl?С INT32 или без него?но, похоже, на каждый вариант, который я пробую, все равно жалуются.Как должно выглядеть объявление, чтобы на вторую строку не поступали жалобы?- ваше здоровье.

Это было полезно?

Решение

Согласно MSDN Документация это должно выглядеть следующим образом:

LRESULT CALLBACK graph_window_handler(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

И если вы проверите WinUser.h вы увидите, что WNDPROC заданный тип выглядит следующим образом:

typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top