CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 15 of 20

Threaded View

  1. #1
    Join Date
    Nov 2003
    Portland, OR

    CStatic control flicker only when running with Windows Classic theme

    I'm dealing with a very weird visual bug. Let me explain.

    I have a C++/MFC application that displays a count in a window:

    Name:  1.png
Views: 1028
Size:  5.3 KB

    The count (text) is displayed via a `CStatic` control. The mechanism is very simple. I call it every 1000 ms and update the text as such:

        void CTestCountdownFlickerDlg::RedrawCounter(LPCTSTR pText)
        	CStatic* pTxtBox = (CStatic*)this->GetDlgItem(IDC_STATIC_COUNTER);
        	//Get previous text
        	CString strPrevText;
        	//Update only if different
        	if(strPrevText.Compare(pText) != 0)
        		//Set next text
    What happens is that the `CStatic` control updates without any issues on the OS with visual themes enabled, but if I run it on the OS with the Windows Classic theme (for instance, the screenshot above is from Windows 7) the `CStatic` control produces a visible flicker every time it updates the text.

    Well, I understand that I'm nitpicking here, still I would really like to get rid of this flicker.

    Here's what I tried:

    1. In my actual project I tried subclassing the `CStatic` control and removed the processing of `WM_ERASEBACKGROUND` by simply returning 1. That didn't help.

    2. In the same subclass for `CStatic` control I tried to override `WM_PAINT`, but that didn't work at all. So I'm not sure if I'm going too far with it at this point.

    I'm attaching the C++/MFC source code for my test project I made the screenshot above for.
    Attached Files Attached Files

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Windows Mobile Development Center

Click Here to Expand Forum to Full Width

On-Demand Webinars (sponsored)

We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.