Здравствуйте, Аноним, Вы писали:
А>Есть контрол который нормально показыает в Win XP, но вот в Windows 7 сильно мерцает, что не так ?
А>void OnPaint() 0 А>{ А> PAINTSTRUCT ps; А> HDC hdc = ::BeginPaint(m_hWnd, &ps);
А> char* text = "hello"; // for example
А> // draw text А> { А> RECT rect; А> GetClientRect(&rect);
А> ::FillRect(hdc, &ps.rcPaint, m_brush1);
А> HFONT hOldFont = (HFONT)::SelectObject(hdc, (HFONT)m_font1);
А> ::DrawText(hdc, text, strlen(text), &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
А> if (hOldFont) ::SelectObject(hdc, hOldFont); А> }
А> ::EndPaint(m_hWnd, &ps); А>}
Это небольшая оптимизация. А мерцание удаляется буферизацией. Если поделка, сделай в классе окна NULL кисть в качестве Background. Или обрабатывай WM_ERASEBKGND
Здравствуйте, Аноним, Вы писали:
А>Есть контрол который нормально показыает в Win XP, но вот в Windows 7 сильно мерцает, что не так ?
Похоже, схема Aero включена? Она в текущую кнопку постоянно рисует пульсирующий бакграунд. Типа, для красоты. Тут нужно применять другие функции для рисования. А вот какие, не помню, буду рад сам почитать про это, если тут напишут
Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, Аноним, Вы писали:
А>>Есть контрол который нормально показыает в Win XP, но вот в Windows 7 сильно мерцает, что не так ?
CEM>Похоже, схема Aero включена? Она в текущую кнопку постоянно рисует пульсирующий бакграунд. Типа, для красоты. Тут нужно применять другие функции для рисования. А вот какие, не помню, буду рад сам почитать про это, если тут напишут
То что система делает со своими кнопками — не влияет на правильно организованную прорисовку.
Здравствуйте, kvasya, Вы писали:
K>То что система делает со своими кнопками — не влияет на правильно организованную прорисовку.
Ну в рамках Aero у топикстартера получается как раз неправильно организованная прорисока. Подсветка 7-й аерой текущей кнопки постоянно генерит WM_PAINT, у топикстартера как раз на неё стоит обработчик.