#include <tchar.h>
--//---
MessageBox(NULL,_T("Release Of DC And RC Failed."),
_T("SHUTDOWN ERROR"),MB_OK | MB_ICONINFORMATION);
Конвертация LPSTR, LPCSTR, LPWSTR в обычный String
Курил МСДН, не помогло :(
Во-вторых, я уже говорил, что существование "указательных" типов (LPSTR и иже с ними) изрядно путает начинающих программистов. Более того, вполне возможно, что и существуют они только для усложнения понимания кода (объективных причин для написания LPSTR вместо char* я не вижу).
В-третьих, что подразумевается под "обычным" String? Тип "string" существует в Delphi (он же "паскаль").
В MSVC (который здесь обсуждается) есть класс CString, который должен иметь кучу методов для взятия информации из указателя на char
В BCB (который обсуждается не здесь) есть класс AnsiString, который имеет конструктор с параметром char*. Соответственно можно делать простое присваивание - приведение выполнится автоматически.
В самом C++, на котором программируют с использованием STL, также есть класс string. Как с ним работать, пусть объяснят мастера "классического C++".
string str = lpVar;
LPWSTR wlpVar = L"something";
wstring wstr = wlpVar;
LPSTR это char*
LPCSTR это const char*
LPWSTR это wchar_t*
это типы данных для WinApi и сделанно это изза того что у каждого языка спецификация типов данных своеобразна а функции WinApi одни. поетому для совместимости языка и WinApi переопределяются только типы
LPSTR- Long pointer to string... и так далее.
Цитата: el scorpio
В самом C++, на котором программируют с использованием STL, также есть класс string. Как с ним работать, пусть объяснят мастера "классического C++".
Работать с адскими типами лучше всего через
Код:
Подробное описание макросов локализации на сайте MS есть где то.
Через префикс L лучше не писать. А насчет STL -ского класса - это другой разговор:)
Цитата:
это типы данных для WinApi и сделанно это изза того что у каждого языка спецификация типов данных своеобразна а функции WinApi одни. поетому для совместимости языка и WinApi переопределяются только типы
Я и говорю - переопределённые типы от Билла Гейтса :D
Хотя и не только от него - во многих библиотеках С++ для чуть ли не для каждой структуры пишется строка typedef TStruct* PStruct :(
Цитата: Zushenskiy
LPSTR lpVar = "something";
string str = lpVar;
LPWSTR wlpVar = L"something";
wstring wstr = wlpVar;
LPSTR это char*
LPCSTR это const char*
LPWSTR это wchar_t*
это типы данных для WinApi и сделанно это изза того что у каждого языка спецификация типов данных своеобразна а функции WinApi одни. поетому для совместимости языка и WinApi переопределяются только типы
string str = lpVar;
LPWSTR wlpVar = L"something";
wstring wstr = wlpVar;
LPSTR это char*
LPCSTR это const char*
LPWSTR это wchar_t*
это типы данных для WinApi и сделанно это изза того что у каждого языка спецификация типов данных своеобразна а функции WinApi одни. поетому для совместимости языка и WinApi переопределяются только типы
Софсем забыл сказать, что пишу на VC++ 2005 и такие вещи чет не прокатывают :(
LPSTR str1 = "bla bla"; // все Ок
String^ str2 = str1; // бум - ошибка С2440
так ты забыл сказать самое главное. Пишешь не на С++ использую компилятор VC++ 2005, а на managed C++. Это тебе нада в раздел .Net
Цитата: DrEvil
Софсем забыл сказать, что пишу на VC++ 2005 и такие вещи чет не прокатывают :(
LPSTR str1 = "bla bla"; // все Ок
String^ str2 = str1; // бум - ошибка С2440
LPSTR str1 = "bla bla"; // все Ок
String^ str2 = str1; // бум - ошибка С2440
А так, как я показал, через макросы? тоже не катит?
function wvsprinf(Output, Format, ArgList: PChar): Integer;
Фоpматиpует и записывает в буфеp последовательность символов.
Паpаметpы:
Output: Буфеp для пpиема отфоpматиpованных символов.
Format: Стpока упpавления фоpматом.
ArgList: Массив аpгументов для стpоки упpавления фоpматом.
Возвpащаемое значение:
В случае успешного завеpшения - число символов в Output, не считая 0; в пpотивном случае - меньше, чем длина Format.
Чем плох?В Format можно вставить все што угодно,а аутпут будет char...