Я пытался без удачи изменить текст подсказки, которая появляется для кнопок в основной строке заголовка формы.
Короче говоря мы использовали кнопку 'Help' для Windows Forms, чтобы иметь некоторую другую цель. Это хорошо работает. Проблема - то, что при парении мыши над той кнопкой, подсказка 'Справки' появляется, который не имеет никакого смысла для приложения.
Идеально, был бы некоторый способ изменить текст той подсказки для моего приложения; однако, в этой точке я был бы удовлетворен, просто найдя способ отключить подсказки в целом.
Я знаю, что можно отключить подсказки для всей ОС путем изменения ключа 'UserPreferencesMask' regedit, но я действительно хотел бы способ иметь это единственное влияние мое приложение.
Снова, идеально был бы некоторый способ сделать это с управляемым кодом, но я не буду настроен против соединения в Windows API и т.п.
Спасибо за любые предложения для того, чтобы решить этот вопрос!
Это чрезвычайно интересный вопрос. Первой моей идеей было изменить системное меню с помощью GetSysMenu. Я попытался удалить и переименовать пункт «Закрыть», но всплывающая подсказка кнопки «Закрыть» не изменилась. Затем я попытался захватить HWND окна всплывающей подсказки, но мне это не удалось. Если я позволю форме (я работаю в Delphi) отображать всплывающую подсказку с именем "Test", я могу получить ее HWND с помощью FindWindow (nil, 'Test'), а затем я могу отправить ей сообщение WM_CLOSE.
В следующем примере кода я использую таймер для постоянного поиска всплывающей подсказки. Это плохо для производительности, поэтому хотелось бы узнать, когда именно появится всплывающая подсказка. В этом случае, когда всплывающая подсказка связана с клиентским элементом управления, можно просто использовать событие OnHint.
procedure TForm1.Timer1Timer(Sender: TObject);
var
h: HWND;
begin
h := FindWindow(nil, 'Test');
if h <> 0 then
SendMessage(h, WM_CLOSE, 0, 0);
end;
Однако возникают две проблемы, когда всплывающая подсказка связана с кнопками строки заголовка.
В качестве временного решения вы можете не использовать кнопку справки, а: добавьте свою настраиваемую кнопку.
Хотя этот образец не так совершенен, но он показывает вам идею.