2012-04-23 10 views
2

私はC++とWinAPIを使ってプログラミングしています。 Shell_NotifyIcon(NIM_ADD、...)APIを使用してシステムトレイアイコンを追加しました。このアイコンには、関連するユーザープロンプトがあり、その中にアンパサンド記号が含まれています。「&コピー」と表示されます。しかし、プロンプトがポップアップしたときにユーザが見るのは、「View Copy」です。私はアンパサンドを倍増させようとしましたが、 "View & &コピー"と表示されましたが、それは助けになりませんでした。Windowsのシステムトレイのプロンプトにアンパサンドを表示するにはどうすればよいですか?

Windowsのトレイプロンプトにアンパサンドを表示する方法はありますか?

+0

わかりませんが、*エスケープしてみましたか?何かのように: '\&'。 – ereOn

+0

その場合、私はちょうど\を取得します。 – ahmd0

+2

あなたは '&&&'を試しましたか? [このリンク](http://www.developmentnow.com/g/30_2004_12_0_0_27845/Special-Characters-in-ToolTip.htm)が誰かが同じ問題を抱えていて、それを '&&& 'を使って解決したところです。 – ereOn

答えて

2

アンパサンドは、このように&&&のようにダブルエスケープする必要があります。

私は理由は分かりませんが、うまくいくようです。

マイソース:this link

+1

ありがとうございます。出来た。誰が考えていたでしょうか?私はそれを倍増させようとしましたが、それは1つの&と全く同じように見えました。しかし、誰がそれを3つ必要と思っただろうか))典型的なMicrosoft! – ahmd0

+0

そして私は他の答えがなぜ票を集めるのか分かりません。この質問のポイントは完全に間違っています。プロンプトを自分で作成した場合は、TTS_NOPREFIXを追加すると助けになりました。doh ...それは頭がおかしいです。とりあえずありがとう。 – ahmd0

+0

なぜ3つ( '&&&')? –

4

それは、アンパサンドをエスケープの問題ではありません - Windowsのデザインではstrip any ampersands from tooltip text、一般的に正当な理由になります。

多くのアプリケーションが メニューコマンドに対応ツールを含むツールバーを作成します。そのようなツールの場合、ツールチップの コントロールは、対応するメニュー項目と同じテキストを表示すると便利です。 システムが自動的にツールヒントコントロールに渡されるすべての文字列からアンパサンド(&)アクセラレータ文字 を取り除き、そしてコントロールが TTS_NOPREFIXのスタイルを持っていない限り、最初のタブ文字(\ t)で 文字列を終了します。

わかりましたが、答えは非常に簡単です:TTS_NOPREFIXをツールチップクラスに追加するだけで設定できます。

+0

しかし、自分でツールチップを作成しているわけではありません。 Shell_NotifyIcon()を使用します。 – ahmd0

+0

ツールチップのハンドルを取得し、クラスを追加します。あなたは好きなようにそれをすることができますが、かなりあります。 –

+0

申し訳ありませんが、その場合のツールチップの取り扱いはどうなっていますか? – ahmd0

関連する問題