MFC なドキュメント・ビュー

MFCMFC である所以はドキュメント・ビューがあることなんでしょうが,MFC 利用歴うん年にしてやっと使い始めました.
確かによく作られていると思いますよ.素人目にも「おお,データとビューが切り分けられてる」と実感できます.
が,あまりにも用途が限定されているというか,ファイル単位でドキュメントを扱うことを前提に実装されているので,DB を扱うにはトリッキーなコードが多数必要になって困ったもんです.
不用意不必要にデータが捕捉・修正されている部分をデバッガに頼って探り,最善の落としどころを見つける.ちょっと本気になっちゃったら MFC の深い部分に潜り込んで,あやうく出られなくなりそうにもなりつつw
たとえばファイルを開くとき.問題集リストをダブルクリックするとドキュメントが開かれるんだけど,このときパス名には自動的に「カレントディレクトリ名」が先頭に追加されてしまう.これをさけるために問題集IDを末尾に付けることにした.
すると,今度は MRU リストから開いた場合に「フルパス」つまり「C:\Src\PSS\PssEditor\問題集名」とかに変換されて CDocument に渡されてしまう.そこで,CWinApp::OpenDocumentFile で捕捉し,末尾に ID を付加して転送することにした.
これって,仮想メンバ関数のオーバーライドとかわからない人には手も足も出ないやり方だから,…MFC って敷居高いなぁ,とか思ったんだけど,今では C++ なんて常識だから大丈夫なのか,とも思ってみた.嘘です.本音は「楽しくてぶっ壊したくなるね,MFCって」です.