Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Вопрос

Здравствуйте, comp.

Будьте добры! Подскажите такой вопрос. Когда В MFC включаеш разрешение
ввода инструментальных подсказок, можно ли в них вставить свой текст?
Если да, то каким образом.

Ответить   Виктор Mon, 13 Jun 2005 14:03:56 +0400 (#384138)

 

Ответы:

Hello Виктор,

Monday, June 13, 2005, 2:03:56 PM, you wrote:

текст вводится в ресурс StringTable, причем идентификатор строки
используется тот же что и у кнопки тулбара. В строке пишется
фактически две строки - та что будет выводится на тултипе и та что
будет загружаться в панель статуса. Строки разделяются символом '\n'.

А если нужен динамический текст на подсказках, то создавай объект
CToolTipCtrl вручную. Еще есть метод GetToolTips() для CTreeCtrl,
CToolBarCtrl, CSliderCtrl, CReBarCtrl, CListCtrl.

Ответить   Mon, 13 Jun 2005 20:25:44 +0400 (#384268)

 

Здравствуйте, Yury.

Всё разобрался, всё запусти. Работает. Но при попытке ввода подсказки
на русском языке выводит кракозяблики. Как это исправить?

Ответить   Виктор Fri, 17 Jun 2005 14:19:36 +0400 (#386750)

 

Здравствуйте !


Наверно на вкладке "resources" раскрыть папку "string table",
кликнуть правой кнопкой на строчке "String Table [English (U.S)]",
в меню выбрать "properties", потом в диалоговом окне в списке
языков выбрать русский.

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4676
Возраст листа : 636 (дней)
Количество подписчиков : 528
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/386884
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Sat, 18 Jun 2005 01:40:54 +0400 (#386884)

 

Здравствуйте, Victor.

А почему когда в пректе была подключена "String Table" сгенерированная
мастером при построении проекта в "properties" набыло возможности
выбора языка? А когда я удалил "String Table" по умолчанию и подключил
новую "String Table", то возможность выбора языка появилась.

Ответить   Виктор Sat, 18 Jun 2005 10:52:54 +0400 (#387006)

 

Здравствуйте !


Гм... странно. Не замечал такого.
Обычно язык таблицы строк сменить можно сразу после создания проекта.
Лучше это делать именно сразу, т.к. если вписать в таблицу что то
по русски, а потом сменить язык на русский, то все русские строки
станут нечитаемыми.

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4681
Возраст листа : 637 (дней)
Количество подписчиков : 530
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/387221
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Sun, 19 Jun 2005 01:45:51 +0400 (#387221)

 

Здравствуйте, Victor.

Ещё вопрос. У меня не получается включить инструментальную подсказку
над "Edit", "Check Box" и Radio Button". Над ними есть возможность
включить подсказку?

Ответить   Виктор Sun, 19 Jun 2005 10:42:16 +0400 (#387294)

 

Здравствуйте !


Есть конечно.
Есть стандартный контрол Tool Tip в винде.
В MFC есть соответствующий класс CToolTipCtrl.
Так вот. Один способ "включить" подсказки в _любом_ окне - создать
окно тултипа, зарегистрировать "тулы" - задать области в которых будут
выводиться подсказки с помощью CToolTipCtrl::AddTool
(сообщение TTM_ADDTOOL), активизировать его, и ловить сообщения мыши
чтобы вызывать потом CToolTipCtrl::RelayEvent.

Как часто бывает, есть другой способ.

Фишка в том, что в MFC уже реализован механизм создания тултипа,
фильтрации и обработки сообщений мыши для работы с подсказками.
Указатель на экземпляр тултипа находится в структуре _AFX_THREAD_STATE -
в каждом потоке ядро MFC когда надо может создавать 1 экземпляр
этого контрола.
Для того, чтобы "включить" для некоторого окна _автоматическое_
отображение подсказок, надо вызвать для него CWnd::EnableToolTips, либо
CWnd::EnableTrackingToolTips.

Здесь я пишу "автоматическое"... на самом деле не все так просто.
В окне-рамке (понаследованном от CFrameWnd) все действительно будет
работать (если в таком окне создать дочерние контролы, а в таблице
строк будут строки с ID, равными ID этих контролов и эти строки
будут вида '\nПодсказка', то над дочерними контролами будут эти
подсказки выводиться). Если же попытаться что то подобное сделать
для другого окна - не прокатит.

Дело в том, что в CFrameWnd есть обработчик сообщения WM_NOTIFY
с кодами TTN_NEEDTEXTA и TTN_NEEDTEXTW. Этот обработчик как раз
и грузит строки из ресурсов и отдает их тултипу для отображения.

Так вот для решения Вашей задачи (отображения тултипов над дочерними
окнами в любом окне надо для этого окна вызвать EnableToolTips, а также
создать обработчик WM_NOTIFY с кодами TTN_NEEDTEXTA и TTN_NEEDTEXTW:

class CMyWindow : public CBaseClass
{
afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR,
LRESULT* pResult);
...
}

BEGIN_MESSAGE_MAP(CMyWindow, CBaseClass)
//{{AFX_MSG_MAP(CMyWindow)
...
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CMyWindow::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
...
}

Код OnToolTipText можно, конечно, полностью передрать из
CFrameWnd::OnToolTipText (это можно делать в случае, если, например,
проект на диалоге построен), а можно просто делегировать вызов
в метод окна, понаследованного от CFrameWnd (если проект - MFC
SDI или MDI проект, то главное окно - как раз и является наследником
CFrameWnd).

То есть что то типа:

BOOL CMyWindow::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
class CDummyFrame : public CFrameWnd
{
friend class CMyWindow;
};

return ((CDummyFrame *) AfxGetMainWnd())->OnToolTipText(0,
pNMHDR, pResult);
}

Это только если класс главного окна является потомком CFrameWnd

Все, пожалуй :)

--
С уважением, Вахтуров Виктор.

Номер выпуска : 4703
Возраст листа : 647 (дней)
Количество подписчиков : 522
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/392611
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Wed, 29 Jun 2005 00:46:27 +0400 (#392611)