04.05.2008, 15:42
общий
это ответ
Здравствуйте, Blackie!
Дело в том, что функция inet_ntoa возвращает строку с адресом в виде ANSI строки (char*). С помощью явного преобразования (LPCWSTR) перевести строку в UNICODE не получится - буфер сос трокой останется тем же, только вместо одного байта за символ будет считаться 2 (или больше). Надо использовать вспомогательные функции или макросы для преобразования.
Например, A2CW (Ansi string to(2) Const Wide string):
MessageBox(hWnd,A2CW(inet_ntoa(saddr.sin_addr)),L"Сообщение",MB_YESNO);
Для работы макросов необходимо подключить заголовочный файл <atlconv.h>. Так же для некоторых макросов в тело функции, их использующей, вписать макрос USES_CONVERSION;.
ps: раз уж вы в явном виде работаете с UNICODE строками, то лучше использовать UNICODE версии функций, например MessageBoxW. В этом случае, независимо от настроек компилятора (тип строк по умолчанию), все будет работать корректно.