2009-04-07 20 views
0

私はプラットフォームに依存しないファイル/ディレクトリツリーブラウザを実装しようとしています。基本的には、Windowsエクスプローラのツリーコントロールを複製してコンピュータをブラウズしようとしています。しかし、私はどのように "デスクトップ"または "マイコンピュータ"フォルダの文字列(それはすべてのPCとOSの種類、バージョン、言語で変更)を見つける方法を見つけることができません。一番上のフォルダ文字列を取得する方法を見つけることができれば、私はうまくツリーを横断して埋め込むことができます。どこかにレジストリ文字列がありますか?Windowsエクスプローラのようなフォルダツリーブラウザ

最初はMS Windows OS(XP、Vistaなど)を対象にしますが、後でLinuxとMacもサポートする予定です。私は自分のGUIにwxWidgetsを使用していますが、私はこの特定の問題に対するすべての提案を受け付けています。ああ、VS2008でC++を使用しています。

+0

を見てみましょう。 「マイコンピュータ」と「デスクトップ」はWindows固有でポータブルではありません。さらに、あなたは自明にトラバースすることはできません。 – MSalters

+0

Windowsのみの場合、文字列「Desktop」をローカライズしますか?または、Desktopフォルダへのパスが必要ですか? – crb

+0

MSalters:あなたが指摘したSHメソッドで遊んだ後、あなたが指摘したことを理解しました。 crb:私はデスクトップへのパスを求めていました。 しかし、最終的にはwxWidgetsでwxGenericDirCtrlを使用する傾向があります。これはポータブルですが、私のディスクはツリーとしてしか得られません。ありがとう。 – mentat

答えて

2

移植性を無視して、 "PIDL"ツリーが必要です。 PIDLはファイルパスの一般化です。特別なフォルダのPIDLはSHGetFolderLocationで得ることができます。デスクトップはCSIDL_DESKTOPではなく、CSIDL_DESKTOPDIRECTORY)、マイコンピュータはCSIDL_DRIVESです。名前にPIDLsを変換するには

は、おそらくここでつまずくするつもりSHGetNameFromIDList