|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.09.2011, 18:32 | #1 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
Unicode-заголовок окна
Создаю окно. Регистрирую класс окна функцией RegisterClassExW. Потом создаю функцией CreateWindowExW. Название класса и заголовка окна я использую Unicode-строки. Также использую транслятор masm32. После создания и появления на экране окна в заголовке появляется какая-то белеберда. Может скажет кто в чем дело?
|
12.09.2011, 18:45 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
строки как задаете то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
13.09.2011, 01:27 | #3 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
Пробовал сначала так:
Код:
Код:
|
13.09.2011, 04:28 | #4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Maks1978
Поставь GetMessageW, DefWindowProcW, DispatchMessageW И для набора Unicode-строк воспользуйся моим макросом DU Код:
Последний раз редактировалось Mikl___; 13.09.2011 в 14:23. |
13.09.2011, 13:52 | #5 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
Сработало, поставил вместо GetMessage, DefWindowProc, DispatchMessage - GetMessageW, DefWindowProcW, DispatchMessageW. Не знал, что у этих функций могут быть Unicode-аналоги.
Только с первой строкой, почему-то русские буквы транслятор моленько не тот код ставит. Вторая строка прекрасно выводится в заголовке окна. Вопрос закрыт. Спасибо. |
13.09.2011, 14:17 | #6 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Maks1978
Для набора русских надписей должна стоять CP-1251 кодировка в той IDE (Integrated Development Environment), где ты набираешь асм-файл, наверное, у тебя стоит DOS-кодировка (CP-866). А макрос для юникод-строк попробовал использовать? Последний раз редактировалось Mikl___; 13.09.2011 в 14:58. |
13.09.2011, 17:46 | #7 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
Я точно не знаю, но если я не ошибаюсь макросы генерют коды в сегменте
Код:
Код:
|
14.09.2011, 04:05 | #8 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Maks1978
макросом можно создавать как код так и данные, тебя ведь не смущает конструкция db 4 dup (1,'string') а это тоже макрос. Макрос DU создает юникод-строки, хочешь в секции .data -- хочешь в секции .code Всё что от тебя требуется -- поставить после имени строки двоеточие, а саму строку заключить в "уголки", завершающий ноль макрос подставит сам wTitle: du <Формулы в Word 2007>. Для управления кодировкой при трансляции нужны не макросы, а директивы условной трансляции... Директивы IF и IFE - условная трансляция по результату вычисления логического выражения. Директивы IFDEF и IFNDEF - условная трансляция по факту определения символического имени. Директивы IFB и IFNB - условная трансляция по факту определения фактического аргумента при вызове макрокоманды. Директивы IFIDN, IFIDNI, IFDIF и IFDIFI - условная трансляция по результату сравнения строк символов. Условные директивы компиляции имеют общий синтаксис и применяются в составе следующей синтаксической конструкции: IFxxx логическое_выражение_или_аргументы фрагмент_программы_1 ELSE фрагмент_программы_2 ENDIF Заключение некоторых фрагментов текста программы - фрагмент_программы_1 и фрагмент_программы_2 - между директивами IFxxx, ELSE и ENDIF приводит к их выборочному включению в объектный модуль. Какой именно из этих фрагментов - фрагмент_программы_1 или фрагмент_программы_2 - будет включен в объектный модуль, зависит от конкретного типа условной директивы, задаваемого значением xxx, и значения условия, определяемого операндом (операндами) условной директивы логическое_выражение_или_аргумент(ы ). Синтаксические конструкции, соответствующие директивам условной компиляции, могут быть вложенными друг в друга Директивы IF и IFE Синтаксис этих директив следующий: IF(E) логическое_выражение фрагмент_программы_1 ELSE фрагмент_программы_2 ENDIF Обработка этих директив макроассемблером заключается в вычислении логического_выражения и включении в объектный модуль фрагмент_программы_1 или фрагмент_программы_2 в зависимости от того, в какой директиве IF или IFE это выражение встретилось: если в директиве IF логическое выражение истинно, то в объектный модуль помещается фрагмент_программы_1. Если логическое выражение ложно, то при наличии директивы ELSE в объектный код помещается фрагмент_программы_2. Если же директивы ELSE нет, то вся часть программы между директивами IF и ENDIF игнорируется и в объектный модуль ничего не включается. Кстати сказать, понятие истинности и ложности значения логического_выражения весьма условно. Ложным оно будет считаться, если его значение равно нулю, а истинным - при любом значении, отличном от нуля. директива IFE аналогично директиве IF анализирует значение логического_выражения. Но теперь для включения фрагмент_программы_1 в объектный модуль требуется, чтобы логическое_выражение имело значение "ложь". Директивы IF и IFE очень удобно использовать при необходимости изменения текста программы в зависимости от некоторых условий. Последний раз редактировалось Mikl___; 14.09.2011 в 09:59. |
25.09.2011, 22:20 | #9 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
Макрос работает, только одно но
wTitle: du <Формулы в Word 2007> - в таком виде MASM32 не понимает сдеалал отдельно wTitle PROC du <Формулы в Word 2007> wTitle ENDP - все прекрасно Может потому, что у тебя формат программы: start: ... начало экзешника ... процедура окна ... end start а у меня: ... 1 PROC начало экзешника 1 ENDP ... 2 PROC процедура окна 2 ENDP ... |
26.09.2011, 05:07 | #10 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Maks1978
Всё может быть! Я добавляю секции код атрибут "запись" и поэтому обхожусь без сегментов ".data", ".const", ".data?" |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пустой заголовок окна | Хамяг | Общие вопросы Delphi | 6 | 28.05.2011 19:58 |
заголовок окна | s1s1s1 | Общие вопросы Delphi | 1 | 06.02.2010 22:49 |
Заголовок окна | doniyor | Общие вопросы Delphi | 3 | 14.07.2009 01:23 |
Ник и заголовок окна | Патрон | Общие вопросы Delphi | 9 | 12.04.2008 20:39 |
Заголовок у окна | Михаил Юрьевич | Общие вопросы Delphi | 1 | 22.02.2008 00:08 |