掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
画面の描画ちらつきが解消できない (ID:72900)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
追記です。 OnPaint()のみを以下に変更して、 裏画像を使用したダブルバッファリング処理に しましたが、今度は何も表示されなくなってしまいました。。 void Cfullcolor_illumiDlg::OnPaint() { if (IsIconic()){ CPaintDC dc(this); // 描画のデバイス コンテキスト SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // クライアントの四角形領域内の中央 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // アイコンの描画 dc.DrawIcon(x, y, m_hIcon);} else { CClientDC myPictDC(&m_pict); CPen myPEN, *oldPEN; CRect myRECT; CDC* pDC=m_pict.GetDC(); m_pict.GetClientRect(myRECT); //ダブルバッファリング処理用 CDC memDC; HDC db_mem; pDC->CreateCompatibleDC(m_pict.GetDC()); CBitmap memBmp; memBmp.CreateCompatibleBitmap(m_pict.GetDC(), myRECT.Width(), myRECT.Height()); CBitmap* memOldBmp=pDC->SelectObject(&memBmp); switch(timer_paint_flag){ case 0: break; case 1: //秒数の箇所だけ上塗り m_pict.GetClientRect(myRECT); pDC->FillSolidRect(DISP_TIME_SX - 2, 200, 120, 20, RGB(192,192,192)); pDC->FillSolidRect(myRECT,RGB(192, 192, 192)); break; case 2: for(loop_day = 0; loop_day < 32; loop_day++){ //日毎の横線 描写 if(loop_day == 0){ } else{ pDC->MoveTo(0, (loop_day * reso_magni1)); pDC->LineTo(X_LINE_RIGHT_MAX, (loop_day * reso_magni1)); } } break; default: break; } //ダブルバッファリング処理(仮画像→表示画像 へ転送処理) BitBlt(pDC->GetSafeHdc(), 0, 0, myRECT.Width(), myRECT.Height(), pDC->GetSafeHdc(), 0, 0, SRCCOPY); //仮想デバイスコンテキストのビットマップを初期化 pDC->SelectObject(memOldBmp); //CreateCompatibleDCのリソース開放DeleteDC(memDC); //仮想デバイスコンテキストのビットマップを廃棄 memBmp.DeleteObject(); } CDialog::OnPaint(); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.