Subversionのmoveはcopy+deleteなので、revertしようとすると面倒です。
# 移動 svn mv a/x.cpp b/x.cpp # 移動元をrevert svn revert a/x.cpp # 移動先をrevert svn revert b/x.cpp # 移動先のローカルファイルを削除 rm b/x.cpp
どのファイルをどこに移動したかは自分で覚えておかなくてはいけません*1。移動先はaddされた状態なのでrevertしてもローカルファイルが削除されません。間違って消えてしまうよりはましですが何とかならないものでしょうか。
*1 svn stしてもわかりません
IEのアドレスバーなどのようなエディットボックスやコンボボックスのオートコンプリートは、SHAutoCompleteを使うと簡単に実装できます。細かい制御がしたい場合には、IAutoCompleteを直接使います。補完候補は、IEnumStringで渡すことができます。ディレクトリのように階層化されたものを補完するときには、IACListを使います。というあたりの話が、Using Autocompleteに書かれています。
QMAIL3のアドレスの自動補完にこの機能を使えるかなと思って調べたのですが、アドレス入力欄は一つのエディットボックスに複数のアドレスを入れるのでかなりトリッキーなことをやらないとだめそうです。Windows CEで使えないという問題もあります。
シェル周りのインターフェイスを調べていたときに見つけたのですが、IShellMenuを使うとIEのお気に入りのような右クリックしたりドラッグアンドドロップできるメニューが作れます。しかし、そのあたりの動作が可能になるのは、シェルのネームスペースに入っているものだけのようです。逆に考えると、好きな階層をIShellFolderで見せるようにすれば、好きなものを入れられるかも知れません。
ShellExecuteExに渡すSHELLEXECUTEINFOのlpVerbにNULLを設定すると、デフォルトのVerbがない場合にクラッシュするっぽいです*1。ドキュメントにもNULLを渡せると書いてありませんし。
5年以上前に同じことに気付いた気がしますが、すっかり忘れていたのでメモ。
*1 Windowsでは問題ないです
アプリケーションにブラウザやHTMLエディタを埋め込むためのSDKを作るプロジェクトです。