это называется кодировки, WCHAR - UTF16-LE, а CHAR - ANSI, iconv можно использовать для перекодировки, но если надо перекодировать определенный набор символов, то можно самому написать простенький перекодировщик
SL7549 т.е. из-за кодировки в одном случае - указатель указывает на первую букву, а во втором на весь текст? а почему? разъясните плиз. просто если бы были в одном случае крякозябры, в другом правильный текст - то понятно - а тут...
В UTF16 при использовании символов с кодами меньше 0x80, они записываются также, как и в ANSI, но так как в UTF16 каждый символ имеет длину 2+ байт, то этот самый второй байт заполняется нулем и поэтому все неюникод функции считают что это конец строки. А iconv, да и вообще многие вещи хорошо смотреть в поиске кода google, http://www.google.ru/codesearch?q=iconv Эта функция должна входить в стандартную поставку библиотеку C, не помню точно в каком файле объявлена, а если нет, то попробуй использовать libiconv.
А вот эта функция подойдет? MultiByteToWideChar(1251,0,lpcString,dwLocalLength,lpReturnValue,(dwLocalLength+1)*sizeof(WCHAR));
о горе, еще не все необходимо загружать Bitmap из файла в одном событии, а работать с ним совсем в другом. Вроде логичное решение хранить глобальную переменную Bitmap, которая то одну то другую картинку содержит и их передает, хотя еще лучше использовать Bitmap * - получать адрес и его потом передавать нужной функции в другом обработчике события. Так вот просто Bitmap как глобальную переменную не получается создать компиллятор сразу ругается: Error 1 error C2512: 'Gdiplus::Bitmap' : no appropriate default constructor available c:\Users\Siv Soft\Documents\Visual Studio 2008\Projects\Test\Test\Test.cpp 65 Test если же написать, например так Bitmap *image то при получении адреса в событии никакой ругани нет, а при передаче адреса: Bitmap img = *image; ругань такая: Error 4 error C2248: 'Gdiplus::Bitmap::Bitmap' : cannot access private member declared in class 'Gdiplus::Bitmap' c:\Users\Siv Soft\Documents\Visual Studio 2008\Projects\Test\Test\Test.cpp 260 Test Что делать?
g00r очень дельный совет и глупый... с FreeImage и другими библиотеками - так делать можно было - а здесь в чем проблема?
sivsoft Совет, между прочим, правильный, хотя и неконкретный. При использовании C++ всё-таки рекомендуется знать, что происходит при объявлении переменной, присваивании и зачем конструкторы делают закрытыми. Команда "Bitmap img = *image;" означает, что программист хочет создать второй экземпляр Bitmap и начальным значением для этого второго экземпляра выбрал содержимое первого. GDI+ в таком виде это запрещает, чтобы программист не сделал этого случайно, по ошибке или по незнанию. Если цель - именно создать второй экземпляр, то в классе Bitmap есть метод Clone. Зачем разыменовывать указатель, из #28 непонятно, для передачи одного и того же изображения между функциями или файлами нужно использовать указатель (либо ссылку, что по существу то же самое в другом синтаксисе).