У меня проблема при создании Unicode окна. Я передаю юникодовское название окна, а оно получается лишь с первой буквой. Как будто строку интерпретируют как ANSI. Кто-нибудь встречался с этой проблемой? Код (Text): .data AppName dw "A","u","t","o","Q"," ","2",".","0",0 szEditClass dw "A","u","t","o","Q","E","d","i","t","o","r","C","l","a","s","s",0 .code zeroReg ecx invoke CreateWindowExW,WS_EX_CONTROLPARENT or WS_EX_ACCEPTFILES or WS_EX_APPWINDOW or WS_EX_WINDOWEDGE,\ ; offset szEditClass,offset AppName,\ WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_CLIPCHILDREN or WS_CLIPSIBLINGS,\ ; ecx,ecx,640,480,ecx,ecx,hInstance,ecx
Если я ничего не попутал, надо включить _UNICODE #define _UNICODE иначе TCHAR интерпритируется как char.
TermoSINteZ RtlInitUnicodeString() есть лишь с вынь2К. А как жить в Вынь НТ 4.0? n0name Объясните тёмному разницу между UNICODE_STRING и PWChar. Я думал это одно и тоже. А что значит инициализировать класс? AsmGuru62 RegisterClassW() выполняется выше в функции InitApp. Регистрация проходит нормально. Хотя в C++ функции RegisterClassExW надо скормить юникодовский вариант, но размер обоих одинаковый. Главное, чтобы строковые указатели показывали на юникодовские строки. Вот в приложенном файле RADASM проект. Также длина имени файла не превышает первый символ. Лирическое отступление: Другое дело с OSVERSIONINFOW. Здесь размер разный. Я это не сразу просёк. Вот объявление структуры: Код (Text): ;because official windows.inc does not have this structure OSVERSIONINFOW STRUCT dwOSVersionInfoSize DWORD ? dwMajorVersion DWORD ? dwMinorVersion DWORD ? dwBuildNumber DWORD ? dwPlatformId DWORD ? szCSDVersion WORD 128 dup (?) OSVERSIONINFOW ENDS 828134774__textenc.zip
>>Объясните тёмному разницу между UNICODE_STRING и PWChar. Я думал это одно и тоже. А что значит инициализировать класс? Ну UNICODE_STRING это структура: UNICODE_STRING STRUCT wLength DWORD ? wMaxLength DWORD ? pwString DWORD ? UNICODE_STRING ENDS А PWChar это указатель на Unicode-строку. Иинициализировать класс. ну в моём понимании это заполнить структуру WNDCLASSEXW и вызвать RegisterClassW. Насчет твоего вопроса. вместо dw используй db в имени окна. IsWindowUnicode смотрит на имя класса.
q_q Большое спасибо. Вот так всегда. Вся проблема в одной лишь маленькой дурацкой букве. Просто нужен был свежий взгляд.