Search code examples
c++windowsmfcdialogaero

Disable aero fade-in effect on dialog


I have a modal dialog I'm creating with MFC. When it appears, the Aero theme does it's fade-in transition for a new window appearing. In my particular case I'm switching immediately from one dialog to another and the fade effect is distracting. Is there a way it can be disabled so the window immediately appears, like it does when Aero is disabled, but without switching Aero off completely?


Solution

  • The DwmSetWindowAttribute function might be able to help you. It lets you modify a number of window attributes related to the DWM. In particular, the DWMWA_TRANSITIONS_FORCEDISABLED attribute mentions "Enable or forcibly disable DWM transitions", which just might do the trick.

    HRESULT hr = S_OK;
    LPCVOID dwAttribute  = (LPCVOID)TRUE;
    
    hr = DwmSetWindowAttribute(hWnd, DWMWA_TRANSITIONS_FORCEDISABLED, 
            &dwAttribute, sizeof(dwAttribute));
    
    if (SUCCEEDED(hr))
    {
       // The transitions should have been disabled
    }