2015-02-26 4 views
0

J'essaie de trouver un moyen d'ajouter un TButton dans un indice BallrayIcon Balloon.Composants à l'intérieur d'un indice Balloon

Est-ce possible?

Description de l'application et l'objectif: Fondamentalement, mon logiciel

détecte lorsqu'un périphérique USB est connecté à l'ordinateur et affiche automatiquement un soupçon de ballon qui avertit l'utilisateur que un nouveau périphérique est connecté. Ce qui devrait arriver ensuite est de demander à l'utilisateur "Voulez-vous exécuter l'opération A ou l'opération B?", et je voudrais donner à l'utilisateur un accès rapide aux options directement dans l'indice Ballooon.

Ce que j'ai essayé:

googler beaucoup, mais sans succès, parce qu'il n'y a pas d'info sur la façon d'accéder à l'interface de pointe de ballon en aucune façon.

J'utilise Delphi XE2 sur Windows 8.

+0

Il pourrait être plus facile de créer votre propre fenêtre de ballon à la place. –

+0

@JerryDodge si tel est le cas, comment puis-je correctement répliquer Windows fenêtre de ballon? En outre, comment puis-je récupérer la position de l'icône de la barre d'état afin que je puisse correctement aligner les fenêtres personnalisées du ballon? Ou devrais-je simplement faire apparaître ma fenêtre de ballon personnalisée dans le coin inférieur droit avec une position fixe? Que suggérez-vous? – xaid

+0

Vous devez absolument l'ouvrir à l'emplacement de l'icône, car l'utilisateur peut déplacer sa barre des tâches vers une autre partie de l'écran. En ce qui concerne la reproduction de l'original, cela dépend de votre conception. Il n'y a pas nécessairement une exigence de suivre l'indication de ballon standard, autre que la normalisation de l'assurance-chômage. Juste de nombreux programmes ont tendance à faire leur propre pour des raisons similaires. –

Répondre

4

TTrayIcon est une enveloppe pour Shell_NotifyIcon(), qui ne prend pas en charge des contrôles personnalisés dans ses notifications pop-up.

Vous devrez créer votre propre fenêtre. Vous pouvez utiliser Shell_NotifyIconGetRect() si vous souhaitez le positionner par rapport à l'icône de la barre d'état. Sachez simplement que les icônes de la barre d'état système peuvent être masquées par l'utilisateur. Préparez-vous donc à positionner votre fenêtre contextuelle sans savoir où se trouve parfois l'icône.

+0

Merci, mais il ne dit rien sur la façon d'obtenir la position de l'icône de la barre d'état de mon logiciel dans la zone d'icône de la barre d'état. – xaid

+0

@AidVllasaliu: C'est exactement ce que fait Shell_NotifyIconGetRect() '. Vous lui donnez le HWND/ID de l'icône de plateau désirée, et il vous donne les coordonnées d'écran actuelles de l'icône. Vous pouvez ensuite positionner votre fenêtre par rapport à ces coordonnées si nécessaire. –

+0

Merci. Je vais l'utiliser. – xaid