![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
![]()
Создаю окно. Регистрирую класс окна функцией RegisterClassExW. Потом создаю функцией CreateWindowExW. Название класса и заголовка окна я использую Unicode-строки. Также использую транслятор masm32. После создания и появления на экране окна в заголовке появляется какая-то белеберда. Может скажет кто в чем дело?
![]() |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
строки как задаете то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
![]()
Пробовал сначала так:
Код:
Код:
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Maks1978
Поставь GetMessageW, DefWindowProcW, DispatchMessageW И для набора Unicode-строк воспользуйся моим макросом DU Код:
Последний раз редактировалось Mikl___; 13.09.2011 в 14:23. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
![]()
Сработало, поставил вместо GetMessage, DefWindowProc, DispatchMessage - GetMessageW, DefWindowProcW, DispatchMessageW. Не знал, что у этих функций могут быть Unicode-аналоги.
Только с первой строкой, почему-то русские буквы транслятор моленько не тот код ставит. Вторая строка прекрасно выводится в заголовке окна. Вопрос закрыт. Спасибо. ![]() |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Maks1978
Для набора русских надписей должна стоять CP-1251 кодировка в той IDE (Integrated Development Environment), где ты набираешь асм-файл, наверное, у тебя стоит DOS-кодировка (CP-866). А макрос для юникод-строк попробовал использовать? Последний раз редактировалось Mikl___; 13.09.2011 в 14:58. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 25.05.2008
Сообщений: 53
|
![]()
Я точно не знаю, но если я не ошибаюсь макросы генерют коды в сегменте
Код:
Код:
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#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 ... |
![]() |
![]() |
![]() |
#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 |