Символы Unicode в меню

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Символы Unicode в меню

Сообщение viter.alex » 11.07.2009 (Сб) 22:27

формирую я свое меню в цикле. Символы беру из массива.
Код: Выделить всё
AppendMenu hPopMenu, MF_ENABLED, CLng(j), arChars(j)

И вот что получается:
Изображение
Некоторые символы отображаются, а некоторые (¢, ¥) — нет.
Почему?
Лучше день потерять — потом за пять минут долететь!

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Символы Unicode в меню

Сообщение arthur2 » 12.07.2009 (Вс) 10:06

объяви AppendMenuW :)
Артур
 
   

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Символы Unicode в меню

Сообщение viter.alex » 12.07.2009 (Вс) 15:34

Было объявлено так:
Код: Выделить всё
Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long

Изменил. После этого нужно конвертить строку в Unicode, а потом показывать, иначе получится как на картинке:Изображение
Код: Выделить всё
Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuW" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long

AppendMenu hPopMenu, IIf(arChars(j - 1) = "vertbreak", MF_ENABLED Or MF_MENUBARBREAK, MF_ENABLED), CLng(j), CStr(StrConv(Replace(Replace(Replace(arChars(j), "^", ""), "{", ""), "}", ""), vbUnicode))


Спасибо.
Лучше день потерять — потом за пять минут долететь!

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Символы Unicode в меню

Сообщение arthur2 » 12.07.2009 (Вс) 15:50

viter.alex писал(а):После этого нужно конвертить строку в Unicode, а потом показывать, иначе получится как на картинке:
Не надо ничего конвертировать :) Объяви строку byval as long и передавай strptr
Артур
 
   

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Символы Unicode в меню

Сообщение viter.alex » 12.07.2009 (Вс) 16:19

Точно, а почему так получается?
Лучше день потерять — потом за пять минут долететь!

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Символы Unicode в меню

Сообщение karlex » 12.07.2009 (Вс) 17:18

Потому что если в объявлении функции параметр имеет тип String, то VB будет переводить передаваемое значение в ANSI, и ему ни о чем не говорит суффикс функции "W".
А вот если строку в Unicode еще раз конвертировать в Unicode, получится двойной Unicode и, когда VB будет конвертировать такую строку к ANSI, получится обычный Unicode, т.е. как раз то, что нужно.
Совет arthur2 может быть опасен в плане отладки, лучше объявить как String.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Символы Unicode в меню

Сообщение Хакер » 12.07.2009 (Вс) 17:31

Не лучше.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Символы Unicode в меню

Сообщение karlex » 12.07.2009 (Вс) 17:38

Хотя, да, каюсь, поспешил.
Лишнее конвертирование и помнить нужно, о том что нужно конвертировать.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Символы Unicode в меню

Сообщение Хакер » 12.07.2009 (Вс) 18:00

—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 101

    TopList