2011-12-14 10 views
2

私は上層階から面白いリクエストを受けました。彼らは、複数の時間帯で時刻を表示するためにユーザーのコンピュータに表示されるシンプルなアプリを求めています。それ自体は自明です。現在のUTC時間を取得し、いくつかのラベルのテキストを更新するために見たい任意の数のタイムゾーンに変換するタイマー付きの単純なウィンドウです。最大化されたときに画面の横に「ドック」して他のウィンドウのサイズを制限する.NETアプリケーションを作成する

ここでは擦れがあります。すべての要件を満たすために、ウィンドウは決してデスクトップ上の他のものによって覆い隠されたり覆い隠されたりすることはありません。ユーザーは、常に完全に表示されている必要がある他のアプリケーションを実行していると同時に、これらのウィンドウの1つでこのアプリケーションをカバーすることはできません。

だから、私は2つの方法のいずれかでそれを実装することを考えていました:上に常にあるアプリとして

  • が、背景は完全に透明になり、時間表示が50%透明になりますまたはそのようなもの。マウスをウインドウの上に移動すると、透明度を削除したり、不透明な高コントラストの背景を追加することによって、時間表示を「強調表示」します。 AFAIKこのソリューションはWindows Aeroを使用できません。プライマリユーザーのOSはWindows XPであるためです。

  • 低レベルのWindowsメッセージを使用して、Windowsタスクバーの動作を「常に最前面」モードで模倣するアプリケーションとして、それは画面の上部にドッキングし、常に「通常の」状態ウィンドウの上に表示され、最大化されたときにそれらのウィンドウが重ならないように他のウィンドウの「最大化」動作を管理します。

が、私は実際にこれらのいずれかを実装するために開始する見当がつかないが、私はWinXPの制限を与えられたという推測をハザードう、2番目のオプションは、すべての可能な場合は簡単です。だから、私のフォームの上でWindowsを最大限に活用しないようにWindowsに指示するために実装しようとしている動作は何でしょうか?

+0

私はそれらを見てからしばらくしていますが、Yahoo Widgetsのようなものがあなたの要件を正確に満たすことができないのかどうか疑問に思っています。 http://widgets.yahoo.com/ – dkackman

+1

SHAppBarMessage()をピンボーイする必要があります。 Googleの多くのヒット、最初のヒット:http://www.codeproject.com/KB/dotnet/AppBar.aspx –

+0

@dkackman:これはいい考えですが、私は上層部がYahooを持つために行くとは思わないこれらのワークステーションにインストールされた製品問題の規制はUL規制であり、コンピュータは基本的に通話担当者によって使用されるため、ワークステーションはかなり厳重に拘束されています。 – KeithS

答えて

1

Hans Passantが回答を投稿するのが嫌なので、私は必要なのがアプリをApp Desktop Toolbar(Appbar)にすることだと分かった。 Hansが提供したCodePlexリンクhttp://codeproject.com/KB/dotnet/AppBar.aspxと、トピックに関するMSDNの記事http://msdn.microsoft.com/en-us/library/windows/desktop/cc144177%28v=vs.85%29.aspxは、多くの情報を提供しています。私はかなりコピー/作成するには、そうでない場合は通常の.NETフォームにアプリケーションバーの動作を定義するのCodePlexからコード領域を貼り付けることができたシンプルな概念実証:

enter image description here

1つの変更のI CodeBuild()は、フォームをAppBarとして登録するRegisterBar()の半分を切断して、それを破棄するコードから削除しました。そのため、RegisterBar()の呼び出しは、それを交互に登録したり、

関連する問題