質問: ドキュメントクラスの取得方法 mfc の sdi でアプリケーション開発をしています。 当方 “hello, world!” を学び始めて数ヶ月のビギナーです。 ドキュメント・ビュー構造では ビュークラスからは getdocument() 関数を使って, ドキュメントクラスの public な領域を操作することができます。 ここで質問です。 自分の作った,独自のクラスから,ドキュメントクラスを取得する には,どうしたらいいのでしょうか? getdocument() 関数はビュークラスにしか(?)備わっていないようで,困っています。 ドキュメントクラスの id でも分かれば getdlgitem() が使えるかもしれない(?)などと思ったのですが。 初心者につき,変な質問をしているかもしれませんが,ご教授いただけると幸いです。
回答: 一応、afxgetappでcwinapp*を持って来て、 getfirstdoctemplateposition/getnextdoctemplateからcdoctemplate*を取得、 cdoctemplateからgetfirstdocposition/getnextdocでドキュメントまで到達しますが、 (列挙/検索が入るので)毎回特定のドキュメントが欲しいだけなら向いてません。 # sdiで事実上必ず最初のcdoctemplateとcdocumentが使えるならまだしも...。 独自クラスの役割にもよりますが、cdocumentへの参照をメンバに持つのがよさそうに思います。 もしくは、もしも独自のviewを作ってるなら継承するがよいと思いますけど、 そもそもドキュメントクラスを参照する必要自体が本当にあるのか... 用途に疑念が残ります。