Удаление бордюра в CDateTimeCtrl
От: okta  
Дата: 07.02.12 05:39
Оценка:
Нужен CDateTimeCtrl контрол без бордюра. Создаю его без WS_BORDER, потом проверяю spy++, стили WM_BORDER, WS_EX_CLIENTEDGE, WS_EX_WINDOWEDGE отсутствуют, а рамка рисуется. Есть ли способ избавиться от неё?
Re: Удаление бордюра в CDateTimeCtrl
От: VladFein США  
Дата: 07.02.12 22:48
Оценка:
Здравствуйте, okta, Вы писали:

O>Нужен CDateTimeCtrl контрол без бордюра. Создаю его без WS_BORDER, потом проверяю spy++, стили WM_BORDER, WS_EX_CLIENTEDGE, WS_EX_WINDOWEDGE отсутствуют, а рамка рисуется. Есть ли способ избавиться от неё?


Хэк годится?
Можно создать регион, исключающий бордюр, и установить его этому контролу:

    RECT r = {0};
    m_DateTime.GetWindowRect(&r);
    HRGN hRgn = ::CreateRectRgn(2, 2, r.right - r.left - 2, r.bottom - r.top - 2);
    m_DateTime.SetWindowRgn(hRgn, TRUE);

Конечно, вместо '2' поставьте толщину бордюра.
Re[2]: Удаление бордюра в CDateTimeCtrl
От: okta  
Дата: 08.02.12 06:16
Оценка:
Спасибо за ответ.
Да, думал я об этом, но до конца не хочется извращаться и не верится, что у microsoft есть такой старый глюк... или это сделано с какой-то целью?...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.