Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2013, 00:17   #1
m_kostik
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 24
По умолчанию проблема с макросом

Здравствуйте!
Написал такой макрос (взломщик сообщений WinAPI):
Код:
#define MY_DLG_HANDLE_MSG(hWnd, message, fn) \
  case (message):  return (SetDlgMsgResult(hWnd, message, (fn)))
То есть, я хотел в SetDlgMsgResult() передать значение, возвращаемое функцией fn(). Однако, fn() вообще не вызывалась, а SetDlgMsgResult() по-видимому получала адрес fn(). Тогда я переделал макрос:
Код:
#define MY_DLG_HANDLE_MSG(hWnd, message, fn) \
  case (message):  \
    LONG_PTR i; \
    i = (LONG_PTR)((*fn)(hWnd, wParam, lParam));\
    return (SetDlgMsgResult(hWnd, message, i));
Но fn() по-прежднему не вызывается. Подскажите, где ошибка?
m_kostik вне форума Ответить с цитированием
Старый 09.02.2013, 18:49   #2
m_kostik
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 24
По умолчанию

Решение найдено: вызов функции должен включать в себя скобки с параметрами. Правильно вот так:
Код:
#define MY_DLG_HANDLE_MSG(hWnd, message, fn) \
  case (message):  \
    return (SetDlgMsgResult(hWnd, message, (fn(hWnd, wParam, lParam))))
m_kostik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с макросом kostmos Microsoft Office Excel 4 23.10.2012 15:24
Проблема с макросом Artem_85 Microsoft Office Excel 5 27.02.2012 11:59
Проблема с макросом Excel Excelik Помощь студентам 0 02.11.2011 11:55
Проблема с макросом в Excel ZHDN Microsoft Office Excel 12 05.08.2011 13:32
Проблема с макросом. kolob Microsoft Office Excel 3 22.12.2010 11:13