|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 26, 2004 17:57:56 Как сделать сабж в масме? Вроде пустяшный вопрос. Я пытался найти по форуму - без результатно. |
|
|
Дата: Янв 26, 2004 20:28:57 Если код проекта уже написан - трудненько будет, однако... Заменить надо все вызовы Win32 API с 'A' в конце на имена с 'W' в конце. А это всё, что принимает LPTSTR. Есть и исключения. Например: SendMessage(). Затем, все текстовые константы и буфера должны быть переделаны с DB на DW или загружены из ресурсов через LoadStringW(). |
|
|
Дата: Янв 27, 2004 03:13:36 И всё? Я то думал, какую-нибудь директиву можно вписать и скормить компилятору. А может по этому поводу плаг сделать для RadASM-а? |
|
|
Дата: Янв 27, 2004 07:07:50 Ну, в принципе, если подходить серьёзно, то надо поиметь макро-библиотеку для такого дела и когда делаем новую разработку - сразу писать код, который скомпилируется для обеих режимов: UNICODE и ANSI. Пример такого макро (TASM32): AW_Api macro api_name IFDEF UNICODE api_name textequ <api_name&W> extrn api_name : proc ELSE api_name textequ <api_name&A> extrn api_name : proc ENDIF endm Теперь использовать это как показано ниже: AW_Api GetWindowText .code call GetWindowText Если при компиляции указать /dUNICODE, то TASM произведёт подставление A или W автоматически. |
|
|
Дата: Янв 27, 2004 19:43:55 Но вопрос в следующем: Разница между прогами лишь в используемых версиях функций и представлении строк? Ну ещё размеры строк менять, да? |
|
|
Дата: Янв 27, 2004 20:30:23 В общем, да. --- А что имеется в виду под размерами строк? Размер буфера должен быть вдвое больше для UNICODE. А если говорить о длине строки, то она неизменна. ---
lstrlenA ("Hello"); // ANSI
lstrlenW (L"Hello"); // UNICODE
--- Результат в обеих случаях - 5 символов. --- И конечно же, программа, будет более оптимизирована для конкретной системы. В Win9x, например, все строчные операции будут ANSI. А WinNT, 2000, XP - UNICODE. Это значит (теоретически), что ANSI EXE будет лучше выполняться на Win9x, а UNICODE EXE - на WinNT, 2000, XP. |
|
|
Дата: Янв 28, 2004 13:22:36 Правка AsmGuru62 Результат в обеих случаях - 5 символов 5 символов! Но количество байт будет ведь разным? А вообще - я использую шаблон (см. Аттач) и стараюсь уже при разработке учитывать работу и для ANSI, и для Unicode. Правда, сложно это в masm32, т.к. те, кто писал windows.inc и проч. не учитывали это. Приходится писать свои скрипты для приведения заголовочных файлов к такому виду, как в MS VC. 2076981980__DialogAsMainExU.tpl |
|
|
Дата: Янв 28, 2004 13:29:08 IceStudent Я давно решил эту проблемму. Смотри в инструменты. Правда чтобы мой набор INC работал, нужно убрать STDCALL, и добавить его в windows.inc |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.110 |