Автор Dm stark задал вопрос в разделе Системное администрирование
С++. Какие есть типы открытия окон в структуре WNDCLASSEX? и получил лучший ответ
Ответ от Shockware@mail.ru[гуру]
LPCSTR понимается так.
• LP — Long Pointer (длинный указатель)
• C – Constant (константа)
• STR – String (строка)
По сути LPCSTR это (Длинный) указатель на строку.
декларация типа:
typedef const char* LPCSTR;
LPCWSTR можно понять так:
LP — Long Pointer (Длинный указатель)
C — Constant (константа)
WSTR — Wide character String (строка больших символов)
декларация типа:
typedef const WCHAR* LPCWSTR;
shockware@mail.ru
(74456)
Так смотрите декларацию типа то в хидерах ...в чем проблема ?
Ответ от Александр Бабушкин[гуру]
Вот ответ на ваш вопрос:
#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif
Работает это следующим образом: если в начале программы написать #define UNICODE, то все LPCTSTR в вашей проге превращаются сначала в LPCWSTR потом в WCHAR* и, в конечном итоге, в wchar_t *. Если НЕ писать #define UNICODE, то LPCSTR будет CHAR* обычным чарактером char*. Есть ещё хитрый макрос TEXT("some text "), который работает аналогичным образом. Функции WinAPI тоже аналогичным образом завязаны на UNICODE. Всё это в совокупности даёт контроль Вам над программой: хотите компилировать Юникодовскую версию - нет ничего проще! Просто включаете в начале #define UNICODE - и всё!
Манипуляции с 64-битными типами ещё более хитрые, так что компиляция в 64-битный экзешник тоже происходит автоматически, достаточно изменить одну единственную переменную окружения (какую, попробуйте найти сами!).
Вот ответ на ваш вопрос:
#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif
Работает это следующим образом: если в начале программы написать #define UNICODE, то все LPCTSTR в вашей проге превращаются сначала в LPCWSTR потом в WCHAR* и, в конечном итоге, в wchar_t *. Если НЕ писать #define UNICODE, то LPCSTR будет CHAR* обычным чарактером char*. Есть ещё хитрый макрос TEXT("some text "), который работает аналогичным образом. Функции WinAPI тоже аналогичным образом завязаны на UNICODE. Всё это в совокупности даёт контроль Вам над программой: хотите компилировать Юникодовскую версию - нет ничего проще! Просто включаете в начале #define UNICODE - и всё!
Манипуляции с 64-битными типами ещё более хитрые, так что компиляция в 64-битный экзешник тоже происходит автоматически, достаточно изменить одну единственную переменную окружения (какую, попробуйте найти сами!).
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: С++. Какие есть типы открытия окон в структуре WNDCLASSEX?
С++, объект класса, экземпляр класса, какой тип переменной хранит экземпляр класса? (экземпляр это что? Word, lpstr..?)
Класс это то же самое что старинная структура данных, только теперь он хранит
еще и методы
подробнее...
спросили в Instagram
Что это за шрифт? Им ещё написан Instagram
Lobster
http://cg.pankov(здесь
подробнее...
Что это за шрифт? Им ещё написан Instagram
Lobster
http://cg.pankov(здесь
подробнее...
Чем омары отличаются от лобстеров?
Абсолютно ничем.
Омары (лобстеры) живут на скалистых песчаных материковых отмелях как в
подробнее...
спросили в Трино
Трин Луна-Венера. Что это значит?
Это очень хороший показатель для личной жизни. Чувства находятся в гармонии. Хороший показатель для
подробнее...
Трин Луна-Венера. Что это значит?
Это очень хороший показатель для личной жизни. Чувства находятся в гармонии. Хороший показатель для
подробнее...
Парень на кухне - это нормально?
А что в этом такого??? Представь, за собой ещё и кухню убирать
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
WinApi C++ Как преобразовать int в LPCWSTR?
int a = 70;
wchar_t str[20];
_itow(a, str, 10); // Число, буфер, система счисления
подробнее...
Лобстер-это что такое? Или-кто такой?
Лобстер, или омар, – это десятиногий рак длиной до 60 см и весом до 1,5 кг – встречаются, правда, и
подробнее...