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


84

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

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

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

そして、なぜこの値を構成できないのですか?

「パフォーマンス」の答えを出す前に、次の ことを考慮してください。Windowsでは、パフォーマンスを停止できるような構成が可能です...なぜこの問題を具体的に選択するのですか?


なぜこれが「tortoisesvn」とタグ付けされているのですか?私は何かが足りないのですか?
コーディグレイ

19
tortoisesvnは、アイコンの過度の制限に対処するときに最も頻繁に言及されるアプリであるため、私は賢いと思いました-主に、使用可能なスロットのうち9つを使用するためです。タグを削除しました。
rbellamy 2010

1
制限はWindows10でも同じです。理由もわかりません。
悟飯

回答:


86

ここにいる誰かがたまたまWindowsShellチームで作業していない限り、技術的な制限とそれらが設計の選択にどのように影響するかを実際に解決する答えが得られるとは思えません。しかし、私は試してみます...

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

また、課せられた制限ではなく、意識的な設計の選択である可能性が高いことも考慮する必要があります。レイモンド・チェン(実際には誰が行いシェルチームの仕事を)公表されたブログエントリ「手を共有する」オーバーレイを削除するのWindows 7についての騒動への対応を。彼は、アイコンオーバーレイは、情報を表示するための望ましい方法ではないという説得力のある主張をしています(システムが15に制限されているという事実を超えて)[強調追加]:

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

シェルに追加された余分な雑然としたものは、実際のケースの大部分では単に価値がないことは私には合理的だと思います。Windows Shellチームは明らかに同じ結論に達し、「共有ハンド」オーバーレイをカットしました。レイモンドの直接の説明:

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

そして、私はあなたがパフォーマンスは言うまでもなく特に尋ねたのを知っています、しかしWindowsは本当にあなたが自分の足を撃たないようにしようとします。ユーザーはシェルでの応答性を要求し、オーバーレイアイコンはこれを妨げる可能性があります。それらが優先事項ではないことのさらなる証拠として、同じレイモンド・チェンによる別のブログ投稿が非難します:

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


15
優れた応答。したがって、おそらくより良い質問は、「ファイル/フォルダのステータスに同じインスタントビジュアルキューを表示するアイコンオーバーレイの代替手段は何ですか?」です。レイモンド・チェンが言及している正確な理由から、アイコンを使用してコンテンツタイプを識別する以上のことを行うことがますます重要になっているように思われます。ファイルの場所の境界があいまいになり、ステータスが重要になります。
rbellamy 2010

3
それは意識的な設計の選択でも課せられた制限でもないのではないかと私は非常に疑っていますが、かなり前に行われた(Win 95頃)、インストールされたユーザーベースのために修正されなかった致命的な設計決定です。最も愚かな決定は、各オーバーレイ拡張機能がサポートできるアイコンオーバーレイは1つだけであり、ファイルごとにシェルは「適用しますか?」それはする必要があり、各オーバーレイは、アイコンの配列をサポートしていることをしているし、ファイルごとにシェルはこれに拡張子が一つの選択肢として、「私は適用されません」と答えるかもしれません「そのアイコンオーバーレイ?」、尋ねます。
キースロバートソン

9
興味深いことに、MSはShellIconOverlayIdentifiersWin10の時点で私のレジストリエントリをOneDriveのクラッドで泥だらけにしてこれを受け入れました。TortoiseSVNの/ GITのようなものを使用して開発者に、これらのオーバーレイは非常に重要であり、一方のみを示すことができるという事実が理由ですWHY
Alex McMillan 2016

2
Windows 10が壊したすべてのものの中で、@ Alex、それは私のリストのかなり下にあります。OneDriveをユーザーに押し付けることを決定したのは、シェルチームではなく、明らかにマーケティング部門が行った決定でした。シェルイメージリストをユーザーフレンドリーにするために戻って改善するために時間とお金を費やす人は誰もいませんでした。
コーディグレイ

6
これは受け入れられる答えではありません。その一部がマイクロソフト自体からのものであることを私は知っているので、受け入れられないのはマイクロソフトのアプローチです。私の例を参照してください:DropBox、Google Drive、Mega、OneDrive、Tortoise SVNのフォルダーを同期しました。すべてのフォルダーですべてのオーバーレイを正しく表示したいのですが、このばかげた制限のためにできません。
Carlos B. Feitoza Filho 2016

13

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


4

コーディ・グレイが説明したように、これはすべて非常にうまくいっていますが、率直に言って、それはかなり想像を絶するものであり、舞台裏で報告されているように、少しイライラしているように聞こえます。

2015年とWindows10では、確かに30のオーバーレイが存在し、最も見たいものに優先順位を付ける必要があったため、より優れた機能が存在する可能性があります。これは、ほとんどの人が心配することではありません。また、Boxのような積極的なベンダーが自分たちに優先順位を付けようと競争しすぎているのを目にしますが、それは決して良いことではありません。

可能性は次のとおりです。複数オーバーレイされたアイコンに一般的なオーバーレイインジケーターがある場合はどうなりますか。Google Chromeアプリボタンのような複数の色の小さな長方形のマトリックス?単独でオーバーレイすると、長いリストからオーバーレイが表示されます。

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

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


2
オーバーレイの背後にある考え方は、観察中のオブジェクトのステータスを「一目で」識別できるようにする必要があるということです。あなたの計画は創造的ですが、情報を表面化するために「キーボードまたはマウスの手」を必要とします。ではない私はよりよい解決策を持っていることを...
rbellamy

フライアウトウィンドウに表示する必要がある場合は、情報を情報バーやプレビューペイン、またはUIの他の場所に配置してみませんか?オーバーレイアイコンの要点は、実際にオーバーレイされ、一目でわかるということです。
コーディグレイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.