Форум: "WinAPI";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];
ВнизКак исправить компонент TCoolTrayIcon для выведения юникодов? Найти похожие ветки
← →
Dr.Andrew (2008-08-19 19:19) [0]Доброго дня!
Есть прекрасный компонент TCoolTrayIcon.
Исходник можно видеть здесь:
http://files.codes-sources.com/fichier.aspx?id=47399&f=CoolTrayIcon%2fCoolTrayIcon.pas
И есть в нем функция нужная мне - function TCoolTrayIcon.ShowBalloonHintUnicode, но беда в том что она не выводит правильно юникодные символы.
Я попробывал несколько изменить код функции TCoolTrayIcon.ShowBalloonHintUnicode так:function TCoolTrayIcon.ShowBalloonHintUnicode(Title, Text: WideString;
IconType: TBalloonHintIcon; TimeoutSecs: TBalloonHintTimeOut): Boolean;
// Show balloon hint. Return false if error.
const
aBalloonIconTypes: array[TBalloonHintIcon] of Byte =
(NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR, NIIF_USER);
var
i: Integer;
s: String;
begin
// Remove old balloon hint
HideBalloonHint;
// Display new balloon hint
with IconData do
begin
uFlags := uFlags or NIF_INFO;
FillChar(szInfo, 0, SizeOf(szInfo)); // чтобы был 0 в конце
// следовательно max длинна строки = SizeOf(szInfo) - 1
i := SizeOf(szInfo) - 1;
s := WideCharToString(PWideChar(Text));
if (i > Length(s)) then i := Length(s);
Move({source}PCHAR(s)^, {dest}szInfo, i);
FillChar(szInfoTitle, 0, SizeOf(szInfoTitle)); // чтобы был 0 в конце
// следовательно max длинна строки = SizeOf(szInfo) - 1
i := SizeOf(szInfoTitle) - 1;
s := WideCharToString(PWideChar(Title));
if (i > Length(s)) then i := Length(s);
Move({source}PCHAR(s)^, {dest}szInfoTitle, i);
TimeoutOrVersion.uTimeout := TimeoutSecs * 1000;
dwInfoFlags := aBalloonIconTypes[IconType];
end;
Result := ModifyIcon;
// Remove NIF_INFO before next call to ModifyIcon (or the balloon hint will redisplay itself)
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
end;
или так:function TCoolTrayIcon.ShowBalloonHintUnicode(Title, Text: WideString;
IconType: TBalloonHintIcon; TimeoutSecs: TBalloonHintTimeOut): Boolean;
// Show balloon hint. Return false if error.
const
aBalloonIconTypes: array[TBalloonHintIcon] of Byte =
(NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR, NIIF_USER);
var
i: Integer;
s: String;
begin
// Remove old balloon hint
HideBalloonHint;
// Display new balloon hint
with IconData do
begin
uFlags := uFlags or NIF_INFO;
FillChar(szInfo, 0, SizeOf(szInfo)); // чтобы был 0 в конце
// следовательно max длинна строки = SizeOf(szInfo) - 1
i := SizeOf(szInfo) - 1;
s := WideStringToStringEx(Text, 1252);
if (i > Length(s)) then i := Length(s);
Move({source}PCHAR(s)^, {dest}szInfo, i);
FillChar(szInfoTitle, 0, SizeOf(szInfoTitle)); // чтобы был 0 в конце
// следовательно max длинна строки = SizeOf(szInfo) - 1
i := SizeOf(szInfoTitle) - 1;
s := WideStringToStringEx(Title, 1252);
if (i > Length(s)) then i := Length(s);
Move({source}PCHAR(s)^, {dest}szInfoTitle, i);
TimeoutOrVersion.uTimeout := TimeoutSecs * 1000;
dwInfoFlags := aBalloonIconTypes[IconType];
end;
Result := ModifyIcon;
// Remove NIF_INFO before next call to ModifyIcon (or the balloon hint will redisplay itself)
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
end;
Мои попытки просто изменить Char на WideChar и прочее в том же духе также не привели к успеху.
Уважаемые Мастера, прошу Вашей помощи - что в этом модуле нужно изменить, чтобы правильно выводить WideChar (юникодные) символы.
Спасибо.
← →
Dr.Andrew (2008-08-20 12:52) [1]Добрый день!
Мастера, подскажите что необходимо исправить, чтобы корректно выводить в этом компоненте юникодные символы?
Спасибо.
← →
brother © (2008-08-20 14:16) [2]преобразуй юникод в win1251 и отображай где хош...
← →
Dr.Andrew (2008-08-20 15:02) [3]Спасибо, а можно хотя бы небольшой пример?
← →
brother © (2008-08-20 15:09) [4]копипастер?
← →
Dr.Andrew (2008-08-20 15:15) [5]Навыерное, я не понял Вас правильно, а Вы меня. Мне нужно скорректировать конкретный модуль, приведенный выше. У Вас есть идеи по этому поводу. Может я что не так прописал или упустил. Спасибо.
← →
brother © (2008-08-20 15:18) [6]ты этот код понимаешь? или из инета взял? то что передаешь через Title, Text: WideString; преобразуй из Unicode в Win1251 кодировку и не парься...
← →
Dr.Andrew (2008-08-20 15:38) [7]Я понимаю, но не понимаю как можно преобразовать юникодный символ, например, ñ в русскую букву. Будьте так любезны и напишите как Вы себе это представляете. Спасибо.
← →
brother © (2008-08-20 15:42) [8]> но не понимаю как можно преобразовать юникодный символ,
> например, n в русскую букву. Будьте так любезны и напишите
> как Вы себе это представляете.
спроси у гугла а?
← →
Dr.Andrew (2008-08-20 16:12) [9]Спасибо, Может Мастера все же подскажут возможность корректировки приведенного кода. Спасибо.
← →
Dr.Andrew (2008-08-21 10:34) [10]Доброе утро!
Мастера. помогите найти решение!
Спасибо.
← →
DrPass © (2008-08-21 10:59) [11]Насколько я знаю, Shell_NotifyIcon, вокруг которой вертится эта компонента, юникод не поддерживает
← →
Dr.Andrew (2008-08-21 12:51) [12]Тогда какое решение, может ее можно чем-то заменить? Я полагаю, что такое решение было бы интересно очень многим пользователям этого форума.
← →
Anatoly Podgoretsky © (2008-08-21 15:06) [13]Неdthyj
> TNotifyIconDataA = _NOTIFYICONDATAA;
> TNotifyIconDataW = _NOTIFYICONDATAW;
← →
Dr.Andrew (2008-08-21 15:21) [14]Спасибо за ответ, а можно немного по-подробне, пожалуйста. Как это может быть реально в коде компонента? Спасибо
← →
Anatoly Podgoretsky © (2008-08-21 16:49) [15]Вместо TNotifyIconData использовать явно TNotifyIconDataW
← →
Anatoly Podgoretsky © (2008-08-21 16:51) [16]Код конечно к черту переписать, код принципиально не сможет работать с Юникод.
← →
Anatoly Podgoretsky © (2008-08-21 17:05) [17]Кстати я обратил внимание, что Дельфи 7, а у нее редактор не Юникодовый!
← →
Eraser © (2008-09-09 00:39) [18]все стереть к черту, проект перевести на D2009 - там есть и юникод и компонент для запуздыривания иконки не хуже TCoolTrayIcon :-)
← →
Германн © (2008-09-09 01:14) [19]
> Eraser © (09.09.08 00:39) [18]
Некромант?
(с) sniknik
← →
GrayFace © (2008-09-13 21:46) [20]Eraser, вот тебе экспонат для опытов: http://delphimaster.net/view/5-1174336615/
← →
Плохиш © (2008-09-15 12:46) [21]
> s: String;
И хде тута юникода?
Остальные "многа букав" читать не стал, боюсь глазки поломать...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.005 c