|  | 
 
 | 
| 
			 
			#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)
 | ||