Конечно, можно делать то, что вы описываете. На самом деле вам не нужно ничего делать для создания настраиваемого сообщения для связи в вашем приложении: просто убедитесь, что код, который отправляет сообщение, и код, который получает сообщение, согласуются с тем, что на самом деле является номером сообщения, и используйте сообщение число, которое не совпадает ни с одним из номеров, используемых 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 ()?