解决方案 »

  1.   

    自己判断如果是同一文字就跳过SetDlgItemText
      

  2.   

    但是如果把语句::SendMessage(GetDlgItem(IDC_LOG1)->m_hWnd, WM_SETTEXT, 0, (LPARAM)_TEXT("正在下载文件"));
    换成下面的动态显示,结果相同部分的文字,也表现为闪烁 {
    static int i=0; if(0==i)
    SetDlgItemText(IDC_LOG1, _T("正在升级.\r\n请不要移除设备"));//存在闪烁问题
    else if(1==i)
    SetDlgItemText(IDC_LOG1, _T("正在升级..\r\n请不要移除设备"));
    else if(2==i)
    SetDlgItemText(IDC_LOG1, _T("正在升级...\r\n请不要移除设备")); i++;
    if(3==i)
    i = 0;
    }
      

  3.   

    使用2个CStatic,给第一个CStatic关联一个控件变量 m_tips,第二个控件显示文本 “请不要移除设备”然后在定时器中,m_tips.SetWindowText(...);
      

  4.   

    我刚才试了下这个方法,就是把这个控件在复制出来两个,三个控件在同一位置,其中只有一个控件设为showwindow(true),这样切换这显示;定时器1秒,运行结果也闪,我还真不知道咋解决
      

  5.   

    我只能说奇葩,我测试了,不会出现闪烁的情况。具体测试方法:.h文件
    private:
    CStatic m_label;
    OnInitDialog函数
    CRect rect(20, 20, 150, 40);
    m_label.Create(L"正在升级.", WS_VISIBLE | WS_CHILD, rect, this); SetTimer(1212, 1000, NULL);
    OnTimer函数
    static int n = 0; if(n == 0)
    m_label.SetWindowText(L"正在升级.");
    else if(n == 1)
    m_label.SetWindowText(L"正在升级..");
    else if(n == 2)
    m_label.SetWindowText(L"正在升级..."); if(n == 2)
    n = 0;
    else
    n++; CDialogEx::OnTimer(nIDEvent);你新建一个对话框程序,试试
      

  6.   

    很简单。
    加个成员变量 CFont m_font;
    在OnInitDialog中 m_font.CreatePointFont(12*10, "微软雅黑"); //12号字体
    m_label.SetFont(&m_font);