Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с подсказкой (hint)

748
02 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Народ, тут такой глюк приключился. Оказалось, что в качестве подсказки Hint можно ввести ограниченный текст. То есть я пытался ввести очень длинный текст, но при этом, во время "всплывания" отобразилась лишь его треть. :(
Если кто-нибудь знает, подскажите как обойти это ограничение или как сделать подсказку для икноки в системном трее неограниченной длины?
301
02 февраля 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by AlphaOmega
Народ, тут такой глюк приключился. Оказалось, что в качестве подсказки Hint можно ввести ограниченный текст. То есть я пытался ввести очень длинный текст, но при этом, во время "всплывания" отобразилась лишь его треть. :(
Если кто-нибудь знает, подскажите как обойти это ограничение или как сделать подсказку для икноки в системном трее неограниченной длины?


Решение не сложно - создавай окошко подскзки сам. Вот.

748
02 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by lord Kelvin
Решение не сложно - создавай окошко подскзки сам.



Можно. Но для этого мне нужно как минимум узнать координаты иконки в системном трее. Как эти координаты вычислить?

Или может есть другой способ обойти ограничение в 64 символа для подсказки для иконки в системном трее?

368
02 февраля 2005 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by AlphaOmega

Или может есть другой способ обойти ограничение в 64 символа для подсказки для иконки в системном трее?

Иконка сетевого подключения выводит больше чем 64 символов. Может потому, что подсказку выводить не в одну строку. Попробуй разбить строку не несколько подстрок символом \n.

748
02 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by rostyslav
Попробуй разбить строку не несколько подстрок символом



С этого всё и началось. Не хочет он ни в одну ни в несколько строк делать. На 64 символе обрубает.
А ты всё же пересчитай количество символов в иконке сетевого подключения. Я обе посчитал - оба варианта помещаются в символов 40 - 60...

Ограничение в 64 символа имеет сама структура NOTIFYICONDATA... потому если видишь большее количество символов - значит это сделано "в обход"...

Тогда другой вопрос в ту же тему.
Как "добраться" до процедуру OnMouseOver для компонента "antTaskbarIcon" от "UtilMind"?

368
03 февраля 2005 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by AlphaOmega


С этого всё и началось. Не хочет он ни в одну ни в несколько строк делать. На 64 символе обрубает.
А ты всё же пересчитай количество символов в иконке сетевого подключения. Я обе посчитал - оба варианта помещаются в символов 40 - 60...

Ограничение в 64 символа имеет сама структура NOTIFYICONDATA... потому если видишь большее количество символов - значит это сделано "в обход"...


80 символов.

На codeproject.com есть пару компонент на tooltips, но они на Visual C. Должен быть и на Buildere где-то.

748
03 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by rostyslav
80 символов.



Маловато. Мне нужно 150-200 минимум...

368
03 февраля 2005 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by AlphaOmega
Маловато. Мне нужно 150-200 минимум...

Это иконка сетевого подключения выводит 80 символов. На codeproject.com, есть статься, как определить положение иконки в tray-e.

748
03 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Спасибо. Я гляну этот компонент :). Надеюсь, что он не будет конфликтовать с моим C++ Builder`ом 5... а то мой любимый компонент CoolTrayIcon почмеу-то вызывает access violation при каждом запуске проекта через 5-ый билдер :(
303
04 февраля 2005 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by AlphaOmega
Народ, тут такой глюк приключился. Оказалось, что в качестве подсказки Hint можно ввести ограниченный текст. То есть я пытался ввести очень длинный текст, но при этом, во время "всплывания" отобразилась лишь его треть. :(
Если кто-нибудь знает, подскажите как обойти это ограничение или как сделать подсказку для икноки в системном трее неограниченной длины?



Для версии 5 и выше shell32.dll размер простых хинтов 128 символов. Что касается всплывающих Ballon Tooltips, их можно использовать в Win2000 и выше. Макс. длина надписи на них - 256 символов.
Для Shell_NotifyIcon можно использовать след. структуру:

Код:
typedef struct _NOTIFYICONDATA {
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    UINT uFlags;
    UINT uCallbackMessage;
    HICON hIcon;
    TCHAR szTip[128];
    DWORD dwState;
    DWORD dwStateMask;
    TCHAR szInfo[256];
    union {
        UINT uTimeout;
        UINT uVersion;
    };
    TCHAR szInfoTitle[64];
    DWORD dwInfoFlags;
    GUID guidItem;
} NOTIFYICONDATA, *PNOTIFYICONDATA;


Подробнее - в MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/notifyicondata.asp

Кстати там ошибка в описании структуры NOTIFYICONDATA.
748
04 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by makbeth
Для версии 5 и выше shell32.dll размер простых хинтов 128 символов.



У меня Borland C++ Builder 5. система Windows XP SP1 - и ограничение в 64 символа... хотя шелл32 у меня свежий... и ещё надо учитывать работу программы на осях 2000 и ХР. :(

Пытался использовать компонент TCoolTrayIcon (самый свежий). Так он при компиляции никаких ошибок не выдаёт, зато при старте программы - Access Violation и всё тут :( а ведь у этого компонента есть всё чтобы писать любой длины подсказки. Не подскажешь, как от этого access vioaltion`а избавиться

p.s.: билдер у меня свежий, и единственные установленные компоненты - TCoolTrayIcon и antTaskbarIcon. (причём ошибка выдавалась даже тогда, когда antTaskbarIcon ещё не был установлен)

1
09 февраля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by AlphaOmega


У меня Borland C++ Builder 5. система Windows XP SP1 - и ограничение в 64 символа... хотя шелл32 у меня свежий... и ещё надо учитывать работу программы на осях 2000 и ХР. :(

Пытался использовать компонент TCoolTrayIcon (самый свежий). Так он при компиляции никаких ошибок не выдаёт, зато при старте программы - Access Violation и всё тут :( а ведь у этого компонента есть всё чтобы писать любой длины подсказки. Не подскажешь, как от этого access vioaltion`а избавиться

p.s.: билдер у меня свежий, и единственные установленные компоненты - TCoolTrayIcon и antTaskbarIcon. (причём ошибка выдавалась даже тогда, когда antTaskbarIcon ещё не был установлен)


У тебя на жестком диске, в папке где установлен борладн есть директория которая называется EXAMPLES - что в переводе с буржуйского на русский значит ПРИМЕРЫ - и там мой юный друг ты можешь обнаружить весьма много любопытного и интересного. В часности в поддиректории App - имеется поддиректория TrayIcon - в кторой находится проект, в котором подробно показано - как обрабатывать события мыши над иконкой приложения в трее. Как запихнуть ее туды. И как убрать отедова. И никакие Access violation'ы по ночам тревожить тебя не будут.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог