powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблема с макросом
5 сообщений из 5, страница 1 из 1
проблема с макросом
    #38144227
m_kostik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Написал такой макрос (взломщик сообщений WinAPI):
Код:

Код: plaintext
1.
2.
#define MY_DLG_HANDLE_hWnd, message, fn \
  case (message):  return (SetDlgMsgResult(hWnd, message, (fn)))


То есть, я хотел в SetDlgMsgResult() передать значение, возвращаемое функцией fn(). Однако, fn() вообще не вызывалась, а SetDlgMsgResult() по-видимому получала адрес fn(). Тогда я переделал макрос:
Код:

Код: plaintext
1.
2.
3.
4.
5.
#define MY_DLG_HANDLE_hWnd, message, fn \
  case (message):  \
    LONG_PTR i; \
    i = (LONG_PTR)((*fn)(hWnd, wParam, lParam));\
    return (SetDlgMsgResult(hWnd, message, i));


Но fn() по-прежднему не вызывается. Подскажите, где ошибка?
...
Рейтинг: 0 / 0
проблема с макросом
    #38144353
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_kostikОднако, fn() вообще не вызывалась
Это тебе не паскаль. Для вызова функции круглые скобки - обязательны. Без них, как ты
правильно заметил, получишь всего лишь адрес функции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
проблема с макросом
    #38144481
m_kostik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovm_kostikОднако, fn() вообще не вызывалась
Это тебе не паскаль. Для вызова функции круглые скобки - обязательны. Без них, как ты
правильно заметил, получишь всего лишь адрес функции.

Спасибо, все верно. Нужно было:
Код: plaintext
1.
2.
3.
#define MY_DLG_HANDLE_hWnd, message, fn \
  case (message):  \
    return (SetDlgMsgResult(hWnd, message, (fn(hWnd, wParam, lParam))))
...
Рейтинг: 0 / 0
проблема с макросом
    #38144502
m_kostik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правда, так и не ясно, почему не сработал второй вариант
...
Рейтинг: 0 / 0
проблема с макросом
    #38145453
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_kostik,

Ошибка в том, что ты не вызываешь функцию, даже не пытаешься.
В с/с++ вызов функции — func ().
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблема с макросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]