Комментарий к шагу 340

Здравствуйте. Если использовать приведенный в шаге 340 (Visual C++ ->MFC) пример, то он корректно отработает только один раз. Во второй раз произойдет крах программы. Все дело в описании функции, которая вызывается по событию. Описание функции должно быть следующее:

afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);

Вот выдержка из статьи "Как пережить release-версию" Автор: Dr. Joseph M. Newcomer "Вы обязаны возвращать значение и должны передавать параметры, как указано (и вы обязаны использовать типы WPARAM и LPARAM, если Вам нужна совместимость с 64-битным миром; определенное количество людей, "знавших", что WPARAM означает WORD и просто писавших (WORD, LONG) в своем коде под Win16, расплачивались при попытке перейти на Win32, где это, в действительности, (UNSIGNED LONG, LONG). И все опять будет иначе в Win64. Так зачем делать неправильно, пытаясь показаться умным ?). Заметим, что если вы не используете значения параметров, то вы не даете им имен. Таким образом, ваш обработчик OnMyMessage написан следующим образом

LRESULT CMyClass::OnMyMessage(WPARAM, LPARAM)
{
	...тут что-то делаем...
	return 0; // логически void, всегда 0
}

Вот ссылка на оригинал статьи http://www3.pgh.net/%7Enewcomer/debug_release.htm

С Уважением, Дмитрий
тел.(062)3320209,3320210 (06242) 4-03-53

Автор : Dmitrenko Dmitry.