Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > tooltip


Автор: retto 14.4.2010, 12:46
Есть ли стандартный tooltip который можно вызывать при срабатывании определенного условия?

Автор: borisbn 14.4.2010, 14:14
1. THintWindow
2. 
Код

HWND toolTip = CreateWindow( TOOLTIPS_CLASS,
    NULL,
    WS_POPUP | TTS_NOPREFIX | TTS_BALLOON,
    0, 0, 0, 0,
    NULL, NULL, NULL, NULL );
TOOLINFO info;
info.cbSize = sizeof(TOOLINFO);
info.uFlags = TTF_IDISHWND | TTF_PARSELINKS;
info.hwnd   = main_form->Handle;
info.uId    = 0;
info.hinst  = NULL;
info.lpszText = "tool tip text";

GetClientRect( main_form, &info.rect );
SendMessage( toolTip, TTM_ADDTOOL, 0, (LPARAM)&info );
SendMessage( toolTip, TTM_SETMAXTIPWIDTH, 0, 300 );
...
SendMessage( toolTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)&info);

вообщем смотри SendMessag'и для TTM_xxx

Автор: oldcode 3.1.2011, 09:10
Делаю для RAD XE : 
Код
TForm1*main_form;
UnicodeString str= "Some Text";
HWND toolTip = CreateWindow( TOOLTIPS_CLASS,
NULL,
WS_POPUP | TTS_NOPREFIX | TTS_BALLOON,
0, 0, 0, 0,
NULL, NULL, NULL, NULL );
TOOLINFO info;
info.cbSize = sizeof(TOOLINFO);
info.uFlags = TTF_IDISHWND | TTF_PARSELINKS;
info.hwnd   = main_form->Handle;
info.uId    = 0;
info.hinst  = NULL;
info.lpszText = str.c_str();
GetClientRect(main_form,&info.rect); // Error
SendMessage( toolTip, TTM_ADDTOOL, 0, (LPARAM)&info );
SendMessage( toolTip, TTM_SETMAXTIPWIDTH, 0, 300 );
SendMessage( toolTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)&info);
 получаю  
Цитата
[BCC32 Error] ... : E2227 Extra parameter in call to _fastcall TCustomForm::GetClientRect()
 - для строки - 
Код
GetClientRect(main_form,&info.rect);
 Что не так ?

Автор: Dem_max 3.1.2011, 09:21
Код

RECT rcClient;

GetClientRect(main_form->Handle, &rcClient);

Автор: oldcode 3.1.2011, 15:44
не помогло, та же ошибка в той же строке smile

Автор: Dem_max 3.1.2011, 16:30
тады так
Код

RECT rcClient;
::GetClientRect(Form1->Handle, &rcClient);

Автор: oldcode 4.1.2011, 08:46
Рисует  smile нууу оччень мноого ToolTip'ов  smile , при этом - если форму сдвинуть - оные  ToolTip'ы стойко остаются на своем месте  и каждый из них даже реагирует на щелчек мыши - передвигается на передний план. 
user posted image
Но ошибок нет  smile  и выглядит оччень даже классно  smile . Хочется  smile ...
НО - шо не так  smile ? Как исправить  smile ?
Код
void __fastcall TForm1::RichEdit1MouseMove(TObject *Sender, TShiftState Shift, int X,
                    int Y)
{
RECT rcClient;
UnicodeString str= "Some Text";
HWND toolTip = CreateWindow( TOOLTIPS_CLASS,
NULL,
WS_POPUP | TTS_NOPREFIX | TTS_BALLOON,
0, 0, 0, 0,
NULL, NULL, NULL, NULL );
TOOLINFO info;
info.cbSize = sizeof(TOOLINFO);
info.uFlags = TTF_IDISHWND | TTF_PARSELINKS;
info.hwnd   = RichEdit1->Handle;
info.uId    = 0;
info.hinst  = NULL;
info.lpszText = str.c_str();
::GetClientRect(RichEdit1->Handle, &rcClient);
//GetClientRect(main_form,&info.rect); // Error
SendMessage( toolTip, TTM_ADDTOOL, 0, (LPARAM)&info );
SendMessage( toolTip, TTM_SETMAXTIPWIDTH, 0, 300 );
SendMessage( toolTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)&info);
}

Автор: Dem_max 4.1.2011, 09:07
вот почитай тут обязательно и поймешь шо и как делать http://msdn.microsoft.com/en-us/library/bb760252(v=vs.85).aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)