>
>
>
Путаница с WPARAM и UINT, а также LPARA…

Андрей Карпов
Статей: 671

Путаница с WPARAM и UINT, а также LPARAM с LONG

При попытке перекомпиляции 32-битного Windows приложения для 64-битной системы, большое количество ошибок компиляции связано с некорректными аргументами функций. Часто можно встретить ситуацию, когда в качестве аргументов функции в пользовательском коде используются типы UINT и LONG вместо WPARAM и LPARAM.

Пример:

//Объявление функции в классе
virtual LRESULT OnTrayNotification(WPARAM uID, LPARAM lEvent);
//Реализация функции
LRESULT CSystemTray::OnTrayNotification(UINT wParam, LONG lParam)

В Win32 тип WPARAM совпадает с UINT, а LPARAM с LONG. В Win64 это разные типы и код необходимо скорректировать. Смотрите по этой теме также запись "Распространенная ошибка при компиляции 64-битного приложения: error C2440, OnTimer".