I have an old VC6 application to maintain.
When it starts, it shows the system buttons (minimize, maximize, close) in the usual Windows 7 or Windows 8 style.
As soon as I do an operation that triggers a redraw (SetMenu, move the window…), these buttons change to a Windows 2000 style (just gray boxes with black icons). We have other applications (VC6 as well) that do not have this behaviour.
Any idea where I should start to look ?
Edit: After more investigation, I found that a call to DrawFrameControl is causing all this trouble:
CWindowDC dcWnd(this);
CRect rectWindow, rectClient;
GetWindowRect(&rectWindow);
m_rectDisconnectButton.left = rectWindow.Width() - DISC_BUTTON_WIDTH 6;
m_rectDisconnectButton.top = ::GetSystemMetrics(SM_CYCAPTION) + 4;
m_rectDisconnectButton.right = m_rectDisconnectButton.left + DISC_BUTTON_WIDTH;
m_rectDisconnectButton.bottom = m_rectDisconnectButton.top + BUTTON_HEIGHT;
if ( m_bDisconnectButtonPressed )
dcWnd.DrawFrameControl(&m_rectDisconnectButton, DFC_BUTTON, DFCS_BUTTONPUSH | DFCS_PUSHED);
If I comment the last call, obviously my button will not be drawn, but I no longer have the issue with the "system buttons".