linuxコマンドのcdに相当するフォルダ移動コマンドwalkを実装する。
Console.hで、
Consoleオブジェクトが生成された時のデフォルトカレントパスとしてm_tstrDefaultCurrentPathを用意。
コンストラクタもtstrDefaultCurrentPathを引数に取るものを追加。
そしてOnWalkハンドラを追加。
Console.cppは、
コンストラクタでm_tstrDefaultCurrentPathにtstrDefaultCurrentPathを入れる。
OnCreateでは、pConsoleCore->SetCurrentPathでm_tstrDefaultCurrentPathをセットする。
OnConsoleCoreCommandで"walk"と入力されたらOnWalkを呼ぶようにする。
OnWalkでは、パラメータのtstrPathがなければ、pConsoleCore->GetMyDocumentPathでマイドキュメントのパスを取得してtstrPathに入れる。
tstrPathがある場合は、絶対パスに変換。
pConsoleCore->SetCurrentPathでtstrPathをカレントパスにセット。
pConsoleCore->GetOutputFormStringでフォーム文字列を更新して、UM_FINISHRESPONSEでレスポンス処理終了。
ConsoleCore.cppでは、
カレントパスが無い場合はマイドキュメントをカレントパスとするようにする。
つまり、カレントパスが指定されていたら、そのままにする。
StreamConsole.cppでは、
listの前のpConsoleCore->GetCurrentPathでカレントパスをtstrCurrentPathに保持しておき、listの後に挿入するCConsoleのコンストラクタにtstrCurrentPathを渡す。
これで新しいConsoleでもカレントパスが保持される。
walkにパラメータが無い場合は、
変わらない。
".."で、
上のフォルダに移動。
ここでパラメータ無しのwalkで、
マイドキュメントに戻ってきた。
testフォルダに移動。
testにきた。
ここでlistコマンドを打つと、
testフォルダの一覧を表示し、次のConsoleのカレントパスもtestになっている。
walkで上に移動。
listでマイドキュメント表示。