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

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

Пример:

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

В Win32 тип WPARAM совпадает с UINT, а LPARAM с LONG\. В Win64 это разные типы и код необходимо скорректировать\. Смотрите по этой теме также запись "[Распространенная ошибка при компиляции 64\-битного приложения: error C2440, OnTimer](https://pvs-studio.ru/ru/blog/posts/cpp/k0011/)"\.