|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 19, 2004 09:11:36 У меня прога имеет основное окно - Анси, но в ней Ричедит создаётся как Юникод окно. В ХР всё работает, а в 98-ой ошибка при создании Ричедит окна, номер 120, описание: "Эта функция доступна только в режиме Win32". Я думал, что все оси начиная с 95-ой - Win32. Кто что думает по этому поводу? |
|
|
Дата: Апр 19, 2004 10:01:01 SolidCode Не верная формулировка - This function is not supported on this system - ни слова о win32. Как называется класс окна RichEdit'а? В отладчике прошагать до ошибки не пробовал? |
|
|
Дата: Апр 19, 2004 11:26:35 Насколько я знаю, 9Х\МЕ не поддерживают уникод. Даже понятия не имеют о нем. В них нет суффикса -W. Скорее всего придется переписывать с использованием обычных ф-ии, или забить на эту рухлядь(9x/me) |
|
|
Дата: Апр 19, 2004 12:00:53 Есть такая штука, как Microsoft Layer for Unicode, специально для использования уникода под 9х. |
|
|
Дата: Апр 19, 2004 19:04:43 q_q Ради тебя я ещё раз залезу в 98 (SE, рус. версия) и выполню код, чтобы получить точную строку, которую он мне выдаёт. Это всё формируется GetLastError и FormatMessage. А вообще спасибо за нормальный вариант описания ошибки. SammIk То есть как не поддерживаются? Смеётесь, что-ли. А как же о них в СДК написано? Они сначала переводят свои юникодовские строки в анси, а затем уж спокойно выполняют. В той же проге я скармливаю функции lstrlenW юникодовскую строку и она исправно возвращает мне её длину. А вот юникодовские окна делать не хочет. Да, вот уж посоветовали. Volodya, Edmond, Aquila, вы люди опытные, рассудите нас в этом замешательстве! RobinFood Это что за штука? Интерфейс какой? Или как? И как его использовать. Но что-то подсказывает мне, что дело в другом. Может ещё кто-нибудь что-нибудь скажет? |
|
|
Дата: Апр 20, 2004 04:18:52 SolidCode Это что за штука? Интерфейс какой? Или как? И как его использовать В MSDN прочитай. Там в описании для каждой апишки, использующей текст про этот Layer написано. |
|
|
Дата: Апр 20, 2004 13:09:15 MSDN: By design, functions that take string parameters can handle either Unicode™ (wide character) or ANSI strings. However, Windows 95/98/Me does not implement the Unicode (or wide character) version of most functions. With few exceptions, these functions are implemented as stubs that simply return an error value. However, Windows 95/98/Me does provide Unicode implementations of the following functions. EnumResourceLanguages EnumResourceNames EnumResourceTypes ExtTextOut FindResource FindResourceEx GetCharWidth GetCommandLine GetTextExtentPoint GetTextExtentPoint32 lstrcat (Windows 98/Me) lstrcpy(Windows 98/Me) lstrlen MessageBox MessageBoxEx TextOut |
|
|
Дата: Апр 20, 2004 20:48:59 · Поправил: SolidCode Да, ребята. Вы правы. Я потом на этот вопрос свой СДК перерыл, и Layer нашёл, и указание на то, что в 9Х действительно лучше Юникодом не пользоваться, так как большинство функций вернут ошибку. Плохо изучал в своё время. Видно придётся делать две версии проги. Всем спасибо за терпение на нетерпеливого. |
|
|
Дата: Апр 20, 2004 20:59:44 SolidCode Знаешь ... Я вчера (прогой WinSpy++) пересмотрел RichEdit-ы (порядка 20-ти штук) всех имевшихся у меня программ , которые его используют . И не нашёл ни одного юникодовского ричедита . Может стоит пересмотреть возможность использования ANSI-версии , а не делать две версии программы . з.ы. смотрел на w2k . |
|
|
Дата: Апр 22, 2004 06:04:43 Спасибо за внимание, bogrus. Ты прав по поводу общей тенденции с ричэдитом. Обычно люди используют АНСИ версию и мозги не парят. Но я живу в Казахстане. По-уму казахский язык начал поддерживаться в Винде лишь с 2000-ой версии. До этого приходилось делать собственный драйвер или альт-набором номера символа вводить и лишь в конкретных шрифтах. В ДОСе - простейшей заменой знакогенератора. Чтобы нормально работать с казахским в 2000 и далее, нужен юникодовский ричэдит. Ансишный при наборе казахских букв в XP даёт "?" (то есть винда пытается конвертировать юникодовские символы от драйвера клавы в анси, они нормально не конвертируются и дают лишь "?"). Тогда делаем прогу (основное окно) в Анси, а ричэдит, в зависимости от версии Винды, в Анси или Юникоде. Но такое работать не будет. Я уже с этим столкнулся. Юникодовскому ричэдиту нужно посылать только юникодовские сообщения, а ансишному - только ансишные. А значит, что для соответствующего типа окна придётся свою процедуру обработки сообщений писать. Но даже этого мало. Все сообщения идут через основное окно. А оно у нас ансишное. И процедуры выборки и доставки сообщений такие же. При попытке набора казахских букв в ХР в абсолютно юникодовском ричэдите всё-равно получаем вопросы. Исправляем GetMessage и иже с ним на юникодовские версии и всё наконец начинает работать по-уму. Вот такой путь адепта. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.059 |