アプリ版:「スタンプのみでお礼する」機能のリリースについて

MFC の SDI でアプリケーション開発をしています。

当方 “Hello, world!” を学び始めて数ヶ月のビギナーです。

ドキュメント・ビュー構造では

ビュークラスからは GetDocument() 関数を使って,
ドキュメントクラスの public な領域を操作することができます。

ここで質問です。

自分の作った,独自のクラスから,ドキュメントクラスを取得する
には,どうしたらいいのでしょうか?

GetDocument() 関数はビュークラスにしか(?)備わっていないようで,困っています。

ドキュメントクラスの ID でも分かれば GetDlgItem() が使えるかもしれない(?)などと思ったのですが。

初心者につき,変な質問をしているかもしれませんが,ご教授いただけると幸いです。

A 回答 (3件)

一応、AfxGetAppでCWinApp*を持って来て、


GetFirstDocTemplatePosition/GetNextDocTemplateからCDocTemplate*を取得、
CDocTemplateからGetFirstDocPosition/GetNextDocでドキュメントまで到達しますが、
(列挙/検索が入るので)毎回特定のドキュメントが欲しいだけなら向いてません。
# SDIで事実上必ず最初のCDocTemplateとCDocumentが使えるならまだしも…。

独自クラスの役割にもよりますが、CDocumentへの参照をメンバに持つのがよさそうに思います。
もしくは、もしも独自のViewを作ってるなら継承するがよいと思いますけど、
そもそもドキュメントクラスを参照する必要自体が本当にあるのか…
用途に疑念が残ります。
    • good
    • 0
この回答へのお礼

ご回答くださり,ありがとうございます。

> そもそもドキュメントクラスを参照する必要自体が本当にあるのか…

大変,重要な盲点でした。
指摘くださり,ありがとうございます。

クラスの設計について考え直す必要がある,という結論で納得しました。

せっかくドキュメント・ビュー構造を使っているので,熟考しなおそうと思います。
あくまでも直感ではありますが,より良いデザインが思い浮かびそうです。

お礼日時:2006/12/21 23:52

独自のクラスでviewクラスを継承してしまえばよいのではないでしょうか?

    • good
    • 1
この回答へのお礼

ご回答くださり,ありがとうございます。

> 独自のクラスでviewクラスを継承

少し自分には技術的な経験が不足しているようです。
もう少し勉強して,分かることが多くなったときの参考とさせていただきます。

お礼日時:2006/12/21 23:48

メンバ変数でもしてしまえばいいのでは?


独自のクラスに対して、SetDocument()なんてやって
    • good
    • 0
この回答へのお礼

ご回答くださり,ありがとうございます。

お礼日時:2006/12/21 23:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!