crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
epishev
  опции профиля:
сообщение 27.2.2012, 16:54
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!
Есть вопрос...
Можно в Qt отключить использование unicod?
т. е. грубо говоря
#undef UNICODЕ
#undef _UNICODЕ


Проблема, собственно, вот в чем:
// так как #define UNICODЕ, то WNDCLASSEX является WNDCLASSEXW
WNDCLASSEX      wc;
…
…
…
// естественно компелятор ругается на следующую строчку
wc.lpszClassName="PLAYJIN";

/* ОШИБКА:
error: cannot convert 'const char [8]' to 'const WCHAR*' in assignment
*/

и при этом не могу кастонуть строку, то есть — (WCHAR*)"PLAYJIN"
т. к. в другом приложение, которое использует этот же файл, возникнет противоположная ошибка... короче беда...

Заранее спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 27.2.2012, 16:58
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а так
wc.lpszClassName=L"PLAYJIN";

Сообщение отредактировал Алексей1153 - 27.2.2012, 17:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
epishev
  опции профиля:
сообщение 27.2.2012, 17:01
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 27.2.2012, 16:58) *
а так
wc.lpszClassName=L"PLAYJIN";

мне кажется по сути
L"PLAYJIN" и (WCHAR*)"PLAYJIN"
это одно и тоже, и к сожалению для меня это не вариант...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 27.2.2012, 17:03
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


если же файл используется в двух приложениях с разными кодировками, то при помощи макроса напиши два варианта - для юникода и для анси

если же общий файл трогать нежелательно, то используй (ты ведь в винде ?) WinAPI::MultiByteToWideChar или WinAPI::WideCharToMultiByte

Сообщение отредактировал Алексей1153 - 27.2.2012, 17:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
epishev
  опции профиля:
сообщение 27.2.2012, 17:11
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 27.2.2012, 17:03) *
если же файл используется в двух приложениях с разными кодировками, то при помощи макроса напиши два варианта - для юникода и для анси

если же общий файл трогать нежелательно, то используй (ты ведь в винде ?) WinAPI::MultiByteToWideChar или WinAPI::WideCharToMultiByte

не совсем понял, как я могу использовать эти функции...?
проблема в том, что мне нужно вообще не трогать общие файлы, ну или написать так, чтобы без изменения работало как для CHAR* так и для WCHAR*

Сообщение отредактировал epishev - 27.2.2012, 17:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 27.2.2012, 17:18
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(epishev @ 27.2.2012, 20:01) *
мне кажется по сути
L"PLAYJIN" и (WCHAR*)"PLAYJIN"

когда кажется - надо креститься )

"..." - это тип const char*

L"..." - это тип const WCHAR*

и естественно, что тупое приведение второго к первому (да ещё не к константе) компилятор не допустит

Цитата(epishev @ 27.2.2012, 20:11) *
не совсем понял, как я могу использовать эти функции...?

вот так
http://msdn.microsoft.com/en-us/library/wi...2(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/wi...0(v=vs.85).aspx

PS при этой конвертации удобно пользоваться контейнерами std::string и std::wstring

Сообщение отредактировал Алексей1153 - 27.2.2012, 17:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 28.2.2012, 10:30
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

Спасибо сказали: 30 раз(а)




Репутация:   3  


Цитата(epishev @ 27.2.2012, 17:54) *
Можно в Qt отключить использование unicod?


Можно, указав в настройках проекта DEFINES -= UNICODE
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
epishev
  опции профиля:
сообщение 28.2.2012, 10:33
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 27.2.2012, 17:18) *
Цитата(epishev @ 27.2.2012, 20:01) *
мне кажется по сути
L"PLAYJIN" и (WCHAR*)"PLAYJIN"

когда кажется - надо креститься )

"..." - это тип const char*

L"..." - это тип const WCHAR*

и естественно, что тупое приведение второго к первому (да ещё не к константе) компилятор не допустит

Цитата(epishev @ 27.2.2012, 20:11) *
не совсем понял, как я могу использовать эти функции...?

вот так
http://msdn.microsoft.com/en-us/library/wi...2(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/wi...0(v=vs.85).aspx

PS при этой конвертации удобно пользоваться контейнерами std::string и std::wstring



Видемо я не совсем правильно объяснил проблему....
Как пользоваться этими функциями я знаю.... :) но как они смогли бы мне помочь........

Уже не важно, решил проблему так
вставил
#undef UNICODЕ
#undef _UNICODЕ

перед
#include    <windows.h>


на мой взгляд, смотрится как костыль, но работает....

Цитата(ssoft @ 28.2.2012, 10:30) *
Цитата(epishev @ 27.2.2012, 17:54) *
Можно в Qt отключить использование unicod?


Можно, указав в настройках проекта DEFINES -= UNICODE


блин, мог бы и сам догадаться...

Спасибо, большое!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 23.6.2025, 2:07