LINUX.ORG.RU

Проблемы с локализацией windows forms

 , , , ,


0

1

Странно, что я пишу про программирование под windows на лоре, но все же. Я сам винды и на жестком диске не имею пару лет, но при фрилансе возникла потребность писать под винду на чистом Си. Компилируется все нормально с помощью mingw из-под линукса. Пишу программу по сути консольную, которая просто исполняет некоторый код при запуске и выводит оконный messagebox с уведомлением, что все прошло ОК. Так вот, уведомление должно быть на русском, но тут классические проблемы языка Си и юникода возникают. Компилятор выдает варнинг passing argument 2 of ‘MessageBoxA’ from incompatible pointer type, а messagebox выдает абракадабру. пробовал locale.h, не помогло. Варианты?

P.S. Не пишите, что оффтоп, я пишу код под linux (только для windows).



Последнее исправление: nikitosios20031 (всего исправлений: 1)

Перекодировать сам исходник в виндовую кодировку попробуй

SZT ★★★★★
()

incompatible pointer type

в PChar, емнип, строки нужно передавать

ну и если ты разрабатываешь для NT (9x пора наверное уже забыть как страшный сон), то ты должен юзать предпочтительно функции с суффиксом W. ну и да, естественно всё должно быть в юникоде и клади с прибором на всякие эти кодировки.

anonymous
()

классические проблемы языка Си и юникода возникают

Если ты побайтово строку перелопачиваешь только, в противном случае на кодировку пофик.

варнинг passing argument 2 of ‘MessageBoxA’ from incompatible pointer type

Ворнинг возник из-за чего-то другого.

Bfgeshka ★★★★★
()
Ответ на: комментарий от mittorn

Все, товарищи. Помогло конвертирование в юникод через L"строка" и суффиксы W в паре. Расходимся.

nikitosios20031
() автор топика

Может надо другую кодировку, например cp1251?

u0atgKIRznY5
()

Вообще, для *A и *W функций предполагается использовать макрос TEXT(text) и тип данных TCHAR для строк символов.

sanwashere ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.