web-dev-qa-db-ja.com

ShellIconOverlayIdentifiers-なぜそんなに少ないのですか?

この時点で、ShellIconOverlayIdentifiers(MSDNから)の数には制限があることを誰もが知っています。

システムがサポートできるさまざまなアイコンオーバーレイハンドラーの数は、システムイメージリストでアイコンオーバーレイに使用できるスペースの量によって制限されます。現在、アイコンオーバーレイ用に割り当てられた15のスロットがあり、そのうちのいくつかはシステムによって予約されています。このため、アイコンオーバーレイハンドラーは、十分な代替手段がない場合にのみ実装する必要があります

Windows 95の15オーバーレイlimtを理解できます。しかし、RAMのギグ、多数のコア、GPUが存在する環境では、最新のオペレーティングシステムでこのような低い数に技術的な理由がありますか?

そして、なぜこの値は設定できないのですか?

「パフォーマンス」の答えを出す前に、次のことを考慮してください Windowsでは、パフォーマンスを強制終了できるように構成できます...なぜこの問題を特に選ぶのですか?

84
rbellamy

ここの誰かがたまたまWindows Shellチームで働いていない限り、技術的な制限とそれらが設計の選択にどのように影響するかについて本当に答える答えを得られるとは思わない。しかし、私は試してみます...

私の推測では、技術的な制限はないか、少なくとも現在はありません。 本当の理由は、この制限を解除するためにコード、設計、仕様を更新するのに時間をかけた人が誰もいないということです。機能は実装されていません過去数年間でコンピューティング環境が変化したからといって、誰かが座ってWindowsを書き直して、それらすべての変更を十分に活用できるわけではありません。

また、それは課せられた制限ではなく、おそらく意識的な設計選択であることを考慮する必要があります。Raymond Chen(実際にはdoes Shellチームで働いています) ブログエントリ を公開しました。Windows7の「共有ハンド」オーバーレイの削除に関する騒動への対応。彼は、アイコンオーバーレイが情報を表示するための望ましい方法ではないという説得力のある議論を行っています(システムが15に制限されているという事実を超えて)[強調を追加]:

一般的に、オーバーレイは情報を表示するのに適した方法ではありませんアイコンごとに1つのオーバーレイしか存在できないためであり、ImageListごとに15のオーバーレイの制限があります。 アイテムに適用されるオーバーレイが2つ以上ある場合、1つが勝ち、もう1つが負けます。その時点で、アイテムに適用されるプロパティを決定する方法としてのオーバーレイの値は減少しますプロパティが欠落していることを確認する唯一の方法は、オーバーレイがまったく表示されない場合です。 (他のオーバーレイが表示されている場合、プロパティが見つからないためか、他のオーバーレイが自分の代わりに表示されているためかはわかりません。)

私にとっては、シェルに追加された余分なクラッタは、実際の大多数のケースで単に価値があるとは思えません。 Windows Shellチームは、明らかに同じ結論に達し、「共有ハンド」オーバーレイを削減しました。レイモンドの直接の説明:

人々がコンピューターを使用する方法の変化を考えると、情報の共有はますますデフォルトの状態になりつつあります。 HomeGroupをセットアップすると、ほとんどすべてが共有されます。視覚的な混乱を取り除くために、情報は[詳細]ペインに移動されました。

そして、パフォーマンスについては言及しないように具体的に求めたのは知っていますが、Windowsは実際にtryを実行して、自分が足で撃たれないようにします。シェル、およびオーバーレイアイコンがこれに干渉する可能性があります。同じレイモンド・チェンによるnot the priorityanother blog post であるというさらなる証拠として:

パフォーマンスの利己的なビューを持つアプリケーションの別の例は、アイコンオーバーレイハンドラーを開発している会社から来ました。シェルはオーバーレイ計算を優先度の低いアイテムとして扱います。ユーザーがやりたいことを何でもやり始めることができるように、画面にアイコンを表示することがより重要だからです。装飾は後で来ることができます。この会社は、アイコンが表示される前でもパフォーマンスを改善し、画面にオーバーレイを表示できる方法があるかどうかを知りたかったので、「パフォーマンス」の驚異的な利己的な解釈が示されました。

84
Cody Gray

コーディによる実用的な問題に対する優れた対応。他の数ではなく15である理由については、制限が ImageList コントロール自体に組み込まれています。

13
Bruce

Cody Greyが説明したように、これはすべて非常に良くて良いことですが、率直に言ってかなり想像力に欠け、裏で報告されているように、少しイライラしているように聞こえます

2015年およびWindows 10では、確かに優れた機能が存在する可能性があります。30のオーバーレイが存在することを書き留め、私が最も見たいオーバーレイに優先順位を付けなければなりませんでした。また、Boxのような積極的なベンダーは、自分自身に優先順位を付けようと競い合っています。

ここに可能性があります。多重オーバーレイアイコンに汎用オーバーレイインジケータがあった場合はどうなるでしょうか。 Google Chrome Appsボタンのような複数の色の小さな長方形のマトリックス?単一のオーバーレイは、長いリストからオーバーレイを表示するだけです。

その後、マウスポインターがアイコンに達すると、小さなフライアウトウィンドウがすべてのアイコンのバリエーションを収集して表示します(小さなアイコンサイズまたは少し大きいサイズで)。オーバーレイされた各アイコンは、マウスオーバーすると、ツールチップでその旨を通知します。

これで、さまざまなクラウドの状態、Tortoiseツールなどのリポジトリ表示など、必要なすべてのアイコンオーバーレイを使用できます。

4
narration_sd