Показать подсказку за пределами текущего окна - PullRequest
1 голос
/ 21 апреля 2009

У меня есть приложение .NET WPF, и одно из требований заключается в том, что пользователь может выбирать и копировать текст вне моего приложения. Мое приложение должно отвечать на событие буфера обмена. Найдите слово из словаря и рядом с выделенным текстом отобразите подсказку с переводом слова.

Как я понимаю, это должно быть достигнуто с помощью вызовов Windows API.

Я нашел пример кода, который выполняет эту задачу.

http://www.codeproject.com/KB/miscctrl/tooltipzen.aspx?fid=4069&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26

Одна из моих первых идей состояла в том, чтобы преобразовать этот пример в библиотеку, которую я могу вызвать из приложения .NET (в основном моя библиотека будет содержать 2 метода: показать и скрыть подсказку). К сожалению, мои знания VC ++ почти ничего не значат.

Есть ли другой способ решить эту проблему?

Большое спасибо.

1 Ответ

2 голосов
/ 21 апреля 2009

В подсказках нет ничего волшебного - это просто окна с тонкой рамкой, без заголовка, желтоватого фона и всегда в верхнем стиле.

Вы можете легко скопировать их в WPF:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        ResizeMode="NoResize" 
        SizeToContent="WidthAndHeight"
        Background="Yellow" 
        WindowStyle="None" 
        Topmost="True">
    <Border BorderBrush="Black" BorderThickness="1">
        <TextBlock Text="Tooltip text"/>
    </Border>
</Window>

И теперь вы можете использовать все методы и свойства Window для перемещения, изменения размера, отображения и скрытия вашей «всплывающей подсказки», а в качестве бонуса вы также можете вставить в подсказку более сложный контекст (изображения, кнопки, гиперссылки, ваш логотип) или сделать его более интересным.

...