Это, безусловно, возможно сделать то, что вы описали. Вам не нужно ничего делать, чтобы создать настраиваемое сообщение для связи внутри вашего приложения: просто убедитесь, что код, который отправляет сообщение и код, который получает сообщение, согласен с тем, что на самом деле есть номер сообщения, и используйте сообщение номер, который не перекрывается ни с одним из номеров, которые использует Windows. Существует функция RegisterWindowMessage(), но это необходимо только для того, чтобы получить номер сообщения, который является уникальным для всей операционной системы, поэтому используется для межпроцессного взаимодействия.
Самый простой способ для достижения этой цели является просто заголовочный файл где-содержащий пользовательские номера сообщений, начиная с WM_USER и нумерации вверх, например, так:
#define WM_FIRST_CUSTOM_MSG (WM_USER+0)
#define WM_SECOND_CUSTOM_MSG (WM_USER+1)
Типы WPARAM и LPARAM определены, когда вы включают «windows.h», поэтому могут иметь разные типы в разных системах. Для 32-разрядных операционных систем оба они обычно являются 32-разрядными целыми числами. Если вы просто используете сообщение для целей тестирования, это обычно достаточно хорошо, и вы можете придерживаться того, что хотите. Однако для производственного кода вы должны быть более осторожны: WPARAM действительно предназначен для «целочисленных» данных и LPARAM для «указательных» данных. В Win64, например, LPARAM достаточно длинный, чтобы содержать 64-битный указатель, но WPARAM содержит только 32-битное целое число. Для передачи большего количества данных, чем просто целое число и указатель, я бы использовал lParam для передачи указателя на какую-то структуру, содержащую все мои аргументы.
Сказав все это, это звучит как сложный способ получения отладочного вывода. Вы пытались использовать вызов API OutputDebugString()? Или отладка вызова printf() потока?
MessageBox не работает для вас в этой ситуации? Вы используете MFC? – Klathzazt 2008-11-16 09:37:58
Это не вариант. Там будет много «строк» – Geo 2008-11-16 09:45:22