Doc内DCの一部をViewで表示(編集) – プログラミング – Home

Doc内DCの一部をViewで表示(編...
 
通知
すべてクリア

[解決済] Doc内DCの一部をViewで表示(編集)


りもん
 りもん
(@りもん)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

お世話になってます、環境はWinXP VC7 MFC Doc/View です。

やりたい事はドキュメントとして仮想のデバイスコンテキストを作成して
その一部の特定エリアをビューに表示したいです

プロジェクト名をTestで作成しCTestDocの変数CDC mDCを宣言しています
それをCTestView内で
pDoc->mDC.CreateCompatibleDC(pDC);//①
として
pDC->BitBlt(0,0,500,500,&(pDoc->mDC),50,50,SRCCOPY);//②仮想DCの(50,50)地点を表

としたいのですが
①の段階でエラーが発生します。
mDCをCTestDocの変数ではなく①の直前で宣言した場合は問題なくできるのですが
なぜでしょうか?


引用未解決
トピックタグ
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

情報が少な過ぎます
>pDoc->mDC.CreateCompatibleDC(pDC);//(1)

は CTestView のどこに記述しているのでしょうか?
エラーとはどのようなエラーでしょうか?
実行時のエラーか、ビルド時のエラーかも(なにも書いていないので)判らない
実行時のエラーだとしてどのようなエラーだと言ってきたのですか?

幾つか思い浮かぶ可能性から絞り込めるだけの情報がないので何故かについて適切な
回答が私には出来ません

あと、丸数字は余り使わないほうがいいと思いますので引用では書き換えています


返信引用
りもん
 りもん
(@りもん)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

すみません情報不足でした

>pDoc->mDC.CreateCompatibleDC(pDC);//(1)
>は CTestView のどこに記述しているのでしょうか?

CTestViewのOnDrawです。
エラーというのは実行時のものでDebug Assretion Failed!
というメッセージボックスが表示されてアプリが停止するものでした。

それで、どこに記述といわれてきづいたのですが、エラーの原因はOnDraw内で
pDoc->mDC.CreateCompatibleDC(pDC);
としていたため、すでに作成されているmDCを何度も作成しようとしたのが
間違いだったみたいです。

if(pDoc->mDC==0)
 pDoc->mDC.CreateCompatibleDC(pDC);
とするとエラーが出なくなりました。


返信引用
りもん
 りもん
(@りもん)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

.


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました