Win7 64位专业版。在调整窗口大小之前,GDI通常无法正常工作

时间:2014-01-13 02:04:37

标签: c++ gdi windows-7-x64

在我们的项目中,我们使用GDI绘制波形和任何其他图形,但是,我们遇到一个特殊问题,情况是:

  1. 波形停止绘制,就像没有响应一样。
  2. 工具栏中的按钮也会在鼠标热或点击时停止更新背景,但是,它非常神秘,按钮可以响应事件并打开相关对话框。
  3. 从工具栏打开的对话框可以正常绘制,任何数字都可以正常工作。
  4. 在调整窗口大小时,双击应用程序的标题,任何内容都会正常工作。
  5. 所以,我希望知道Win7 64bits Pro版本中是否有任何已报告的错误或驱动问题。

    堆栈溢出中的类似问题请看以下链接: What could cause redraw issues on 64-bit vista but not in 32-bit in .NET WInForms?

    绘制波形和图形的代码,以及

    void CZMultiPatientView::UpdateDisplay(int ThisSecondCount, int ThisMillisecondCount) 
    {
        CClientDC dc(this);
        CDC *pDC = &dc;
    
        //
        //   Draw waveforms
        //
        DrawPatientViewWaveforms(pDC);
    
        //
        //   Update parameters
        //
        if ((GetElapsedMilliseconds(mLastAlarmMillisecondCount, ThisMillisecondCount) >= 500) || (mForceRedraw)) 
        {             
            //
            //   !!!  SHOULD NOT DO THIS IN HERE !!!
            //
            if (mSetupParameterDialogDisplayed)
            {
                //mParameterDataDialog.UpdateCurrentParameterValues() ;
                m_pParamDlg->SendMessage(WM_UPDATE_VALUE); // Kevin
            }
        }
    
        if ((GetElapsedSeconds(mLastAlarmsecondCount, ThisSecondCount) >= 1) || (mForceRedraw))
        { 
            //Update messages (once a second)
            UpdateMessages(pDC);
            mLastAlarmsecondCount=ThisSecondCount;
        }
    
        if (GetElapsedMilliseconds(mLastDrawParametersCount, ThisMillisecondCount) >= 200 || (mForceRedraw))
        {
            PostMessage(APP_UPDATE_VIEWS, (WPARAM)ThisMillisecondCount, (LPARAM)mForceRedraw);
            mLastDrawParametersCount = ThisMillisecondCount;
        }
    
        //
        //   Update alarms
        //
        if (GetElapsedMilliseconds(mLastAlarmMillisecondCount, ThisMillisecondCount) >= 500) 
        {
            mLastAlarmMillisecondCount = ThisMillisecondCount ;
            DoSoundAlarmTone();
        }
        mForceRedraw = 0 ;
    }
    

0 个答案:

没有答案