掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
画面の描画ちらつきが解消できない (ID:72899)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
WindowsのGUI操作できるソフトを作成しているのですが、 Windows画面の描画のちらつきが発生します。 そのため、こちらで質問いたしました。 OS :Windows XP ツール:VC++2005 St 形式 :MFC、ダイアログベース 私のプログラムの中の、デバイスコンテキスト部分と思う箇所、 怪しいと思っている箇所をなるべく抜粋しました。 1秒間に1回、ONタイマで再描画を行っています。 裏画面用のビットマップを作成してBitBlt()を使用した プログラムに変えて試していますが、真っ黒になったりしてしまいます。 BOOL Cxx_xx::OnInitDialog() { CDialog::OnInitDialog(); ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL){ CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()){ pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); UpdateData(FALSE); m_pict.MoveWindow(RESO_1024MODE_PICT_SX, RESO_1024MODE_PICT_SY, 905, 560); } void Cxx_xx::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); //本描画処理 pDC->FillSolidRect(myRECT,RGB(250,250,240)); myPEN.CreatePen(PS_SOLID, 1, RGB(128, 128, 128)); oldPEN = pDC->SelectObject(&myPEN); pDC->MoveTo(0,100); pDC->LineTo(100,100); m_pict.ReleaseDC(pDC); } CDialog::OnPaint(); } //1秒のonタイマ void Cxx_xx::OnTimer(UINT_PTR nIDEvent){ Invalidate(FALSE); } void Cxx_xx::DoDataExchange(CDataExchange* pDX) { DDX_Control(pDX, IDC_PICT, m_pict); } 情報不足とのことでしたら、追記致します。 よろしくお願い致します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.