環境WindowsXP,VC++6.0 (古くてすみません)
//void CChildView::OnPaint()内で 描画をしています。
//dc.BitBlt(0, 0, m_imageSiH, m_imageSiV, &memDC, 0, 0, SRCCOPY);これで画面を表出しています。
//void CChildView::OnParameterSet()でモードレスのDialogを、メニューの選択で表示します。
現象:Dialogを移動し、描画内に重ねて、再度外すと、描画したのが消えるのと消えないものがあります。消えないものはOnPaintではじめの方で描いたもので
消えるのはその後半で重ね描きしたものです。
また 絵柄の脇に、dc.TextOut( m_imageSiH, strYp, str);でメッセージを書き込んでいるのですが それも消える場合と消えない場合があります。
希望としては消えないようにしたいのですが どのようにしたら良いでしょうか?助言をおねがいします
環境追加MFC使用
現状のOnPaint()コードが長いので ここで示すことが難しいので助言が出来難いと思いますが、どんなことを示せれば良いか 教えて頂ければ出します。
OnPaint()の最後に以下があってもなくても 変わらないようですが
どういう役割りで 標準はどうすべきでしょうか
// CWnd::OnPaint();
描画のコードには上のdc.BitBlt( の他にも以下のコードがあるのですが、これもOnPaint()の最後にいれると
// Invalidate(FALSE);// これをいれるとDialogの移動中に 頻繁な書き換えが起こる(ちらつく)。Invalidate();でも同じにちらつきます。
> 現状のOnPaint()コードが長いので ここで示すことが難しいので
Gist に載せてそのリンク先を示すとか。
助言 ありがとうございます
確かに以前 どこかのFreeWebサーバに載せたことあります。
いまでは どこか不明です
それで GISTとはどこのURLでしょうか 検索の不十分で該当がみつからないのです。多分英語版でしょうね。日本語が良いけど。英語版でもします
はんにゃ
Gitのタイプミスなんじゃないですかね?
無料で使えるGitリポジトリもいくつかあるみたいですけど。
# Git自体使ったことないので不明。(Subversionで済んでいるし)
脇道に逸れますが、GistはGitHubのサービスのひとつで、コード片とか
テキストとか貼り付けできるPastebin的なものです。
https://gist.github.com/
ひとまず 文字の表示は消えなくなりました。
dc.TextOut( m_imageSiH, m_imageSiV, "Here passed");
を当該らしい個所にいれて どこで消えるのと消えないかの境をみつけて
その境での違いを知りました。
コードの処理は
if( GetAsyncKeyState('S') & 0x8000 || GetAsyncKeyState(VK_LBUTTON) & 0x8000)// force to stop animation drawing
{
keyS_M = 0;
dc.BitBlt(0, 0, m_imageSiH, m_imageSiV, &memDC, 0, 0, SRCCOPY);
break;
}
上のdc.BitBlt(0, を 描画が終わった すーと後のOnPaint()の最後に移動させると表示文字が消えない ことがわかりました。
みなさんのご検討ありがとうございました。
まだ 文字以外に円弧の描画自体は消えるのでそれは 描画操作とも関係するので別に質問することにします。
なお、Freeのコードファイルを閲覧(DLも)出来るサイトが引き続き教えてください。
ツイート | ![]() |