|
|
#1
|
|||
|
|||
Не работает Hint
Пишу гаджет. В модуле формы прописан такой код:
Код:
bool SetToDesktop() { HWND listViewhwnd = FindWindowA("Progman", NULL); if(listViewhwnd) { listViewhwnd = FindWindowExA(listViewhwnd, NULL, "SHELLDLL_DefView", NULL); if(listViewhwnd) { listViewhwnd = FindWindowExA(listViewhwnd, NULL, "SysListView32", NULL); if(listViewhwnd) { Form1->BorderStyle = bsNone; ::SetParent(Form1->Handle, listViewhwnd); return true; } } } return false; } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { if(!SetToDesktop())ShowMessage("Ошибка SetToDesktop"); } Код:
::SetParent(Form1->Handle, listViewhwnd); |
#2
|
|||
|
|||
Проблема решена ручками.
Объявил глобальную переменную THintWindow *HintWindow; в TForm1::FormCreate прописал HintWindow = new THintWindow(this); ну и далее: Код:
void SHint(int HWidth, int HHeight, UnicodeString HText) //процедура показа Hint { TPoint pt = Mouse->CursorPos; TRect Rect; Rect.Left = pt.x; Rect.Top = pt.y+15; Rect.Right = Rect.Left + HWidth; Rect.Bottom = Rect.Top + HHeight; Form1->HintWindow->ActivateHint(Rect, HText); Form1->Timer1->Enabled=true; } void __fastcall TForm1::Timer1Timer(TObject *Sender) //процедура сокрытия Hint через некоторый интервал времени { HintWindow->ReleaseHandle(); Timer1->Enabled=false; } Пример использования для объекта кнопка: Код:
void __fastcall TForm1::Button1MouseEnter(TObject *Sender) //показать Hint при наведении мыши { SHint(145,30,"Виртуальная клавиатура\nVirtual keyboard"); } void __fastcall TForm1::Button1TMouseLeave(TObject *Sender) //скрыть Hint принудительно { Timer1Timer(Sender); } |
Этот пользователь сказал Спасибо Maetsky за это полезное сообщение: | ||
Admin (12.03.2020)
|