Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, BuHHunyx, Вы писали:
BHH>>Здравствуйте, Константин Л., Вы писали:
[skip]
BHH>>WM_CTLCOLORSTATIC
КЛ>Про WM_CTLCOLORSTATIC в курсе, но это сообщение посылается паренту, а мне надо менять фон в CSomeControl. REFLECT_NOTIFICATIONS делать не хотелось бы
Здравствуйте, BuHHunyx, Вы писали:
BHH>Здравствуйте, Константин Л., Вы писали:
КЛ>>Здравствуйте, BuHHunyx, Вы писали:
BHH>>>Здравствуйте, Константин Л., Вы писали:
BHH>[skip]
BHH>>>WM_CTLCOLORSTATIC
КЛ>>Про WM_CTLCOLORSTATIC в курсе, но это сообщение посылается паренту, а мне надо менять фон в CSomeControl. REFLECT_NOTIFICATIONS делать не хотелось бы
BHH>Тогда придется все самому в WM_PAINT'е рисовать
Сделал с помощью REFLECT_NOTIFICATIONS/MESSAGE_HANDLER(OCM_CTLCOLORSTATIC...
Но появилась другая проблема — закрашивается фон только той части окна, на которой рисуется текст самого статика. Вот код:
[skip]
КЛ>Сделал с помощью REFLECT_NOTIFICATIONS/MESSAGE_HANDLER(OCM_CTLCOLORSTATIC... КЛ>Но появилась другая проблема — закрашивается фон только той части окна, на которой рисуется текст самого статика. Вот код:
[skip]
Закрашивается бэкграунд статика. Нужно больше — растяни статик в редакторе ресурсов.
Здравствуйте, BuHHunyx, Вы писали:
BHH>Здравствуйте, Константин Л., Вы писали:
BHH>[skip]
КЛ>>Сделал с помощью REFLECT_NOTIFICATIONS/MESSAGE_HANDLER(OCM_CTLCOLORSTATIC... КЛ>>Но появилась другая проблема — закрашивается фон только той части окна, на которой рисуется текст самого статика. Вот код:
BHH>[skip]
BHH>Закрашивается бэкграунд статика. Нужно больше — растяни статик в редакторе ресурсов.
Статик занимает все пространство скриншота, на нем создаются все контролы динамически
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, BuHHunyx, Вы писали:
BHH>>Здравствуйте, Константин Л., Вы писали:
BHH>>[skip]
КЛ>>>Сделал с помощью REFLECT_NOTIFICATIONS/MESSAGE_HANDLER(OCM_CTLCOLORSTATIC... КЛ>>>Но появилась другая проблема — закрашивается фон только той части окна, на которой рисуется текст самого статика. Вот код:
BHH>>[skip]
BHH>>Закрашивается бэкграунд статика. Нужно больше — растяни статик в редакторе ресурсов. КЛ>Статик занимает все пространство скриншота, на нем создаются все контролы динамически
Здравствуйте, BuHHunyx, Вы писали:
BHH>Здравствуйте, Константин Л., Вы писали:
КЛ>>Здравствуйте, BuHHunyx, Вы писали:
BHH>>>Здравствуйте, Константин Л., Вы писали:
BHH>>>[skip]
КЛ>>>>Сделал с помощью REFLECT_NOTIFICATIONS/MESSAGE_HANDLER(OCM_CTLCOLORSTATIC... КЛ>>>>Но появилась другая проблема — закрашивается фон только той части окна, на которой рисуется текст самого статика. Вот код:
BHH>>>[skip]
BHH>>>Закрашивается бэкграунд статика. Нужно больше — растяни статик в редакторе ресурсов. КЛ>>Статик занимает все пространство скриншота, на нем создаются все контролы динамически
BHH>Кодом докажи
Честн. слово
Кода больно много, а вот вам скриншотик
Через перегрузку WM_PAINT закрашивается нормально, но там надо текст самому рисовать
Здравствуйте, BuHHunyx, Вы писали:
BHH>Здравствуйте, Константин Л., Вы писали:
BHH>[skip]
BHH>У тебя походу отрабатывает SetBkColor( hDC, RGB(220, 20, 20) ); BHH>m_BkBrush не используется. Как создаешт?
WTL::CBrush::CreateSolidBrush( COLORREF )
Может это все в WM_ERASEBKGND можно как-то сделать?
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, BuHHunyx, Вы писали:
BHH>>Здравствуйте, Константин Л., Вы писали:
BHH>>[skip]
BHH>>У тебя походу отрабатывает SetBkColor( hDC, RGB(220, 20, 20) ); BHH>>m_BkBrush не используется. Как создаешт?
КЛ>WTL::CBrush::CreateSolidBrush( COLORREF ) КЛ>Может это все в WM_ERASEBKGND можно как-то сделать?
Не нужно . Лучше свой код причеши.
На какие месаги и в каких контролах вызывается OnColor?
Здравствуйте, BuHHunyx, Вы писали:
BHH>Здравствуйте, Константин Л., Вы писали:
КЛ>>Здравствуйте, BuHHunyx, Вы писали:
BHH>>>Здравствуйте, Константин Л., Вы писали:
BHH>>>[skip]
BHH>>>У тебя походу отрабатывает SetBkColor( hDC, RGB(220, 20, 20) ); BHH>>>m_BkBrush не используется. Как создаешт?
КЛ>>WTL::CBrush::CreateSolidBrush( COLORREF ) КЛ>>Может это все в WM_ERASEBKGND можно как-то сделать?
BHH>Не нужно . Лучше свой код причеши. BHH>На какие месаги и в каких контролах вызывается OnColor?
class CBaseControl: public CWindowImpl<CBaseControl, WTL::CStatic>
{
public:
BEGIN_MSG_MAP(CBaseControl)
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColor)
MESSAGE_HANDLER(OCM_CTLCOLORSTATIC, OnColor)//handling own reflected WM_CTLCOLORSTATIC
END_MSG_MAP()
LRESULT OnColor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
};
class CGeneratedTaggingPage : public CPropertyPageImpl<CGeneratedTaggingPage>, public CScrollImpl<CGeneratedTaggingPage>
{
public:
BEGIN_MSG_MAP(CGeneratedTaggingPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInit)
REFLECT_NOTIFICATIONS()//здесь возвращаем CBaseControl'у его WM_CTLCOLORSTATIC
CHAIN_MSG_MAP(CPropertyPageImpl<CGeneratedTaggingPage>)
if(uMsg != WM_PAINT && uMsg != WM_PRINTCLIENT)
{
CHAIN_MSG_MAP(CScrollImpl<CGeneratedTaggingPage>)
}
END_MSG_MAP()
};
На CGeneratedTaggingPage мы динамически создаем CBaseControl.
------
Попробовал добавить еще и рисование в WM_ERASEBKGND:
Комбинация REFLECT_NOTIFICATIONS + MESSAGE_HANDLER(OCM_CTLCOLORSTATIC + MESSAGE_HANDLER(WM_ERASEBKGND работает, но нижний статик(с красным текстом на скриншоте) отказывается становиться прозрачным. Вот реализация OnColor для этого случая:
Здравствуйте, BuHHunyx, Вы писали:
BHH>Здравствуйте, Константин Л., Вы писали:
КЛ>>Здравствуйте, BuHHunyx, Вы писали:
BHH>>>Здравствуйте, Константин Л., Вы писали:
BHH>>>[skip]
BHH>>>У тебя походу отрабатывает SetBkColor( hDC, RGB(220, 20, 20) ); BHH>>>m_BkBrush не используется. Как создаешт?
КЛ>>WTL::CBrush::CreateSolidBrush( COLORREF ) КЛ>>Может это все в WM_ERASEBKGND можно как-то сделать?
BHH>Не нужно . Лучше свой код причеши. BHH>На какие месаги и в каких контролах вызывается OnColor?
поставил тебе баллы за терпеливость и внимание к моей проблеме а ты вдруг замолчал
Что у меня не так?
[skip]
BHH>>Не нужно . Лучше свой код причеши. BHH>>На какие месаги и в каких контролах вызывается OnColor? КЛ>поставил тебе баллы за терпеливость и внимание к моей проблеме а ты вдруг замолчал КЛ>Что у меня не так?
Это у меня те так . Проект засуппортить срочно надо было. Да и рсдн лежал...
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, Константин Л., Вы писали:
КЛ>>Здравствуйте, BuHHunyx, Вы писали:
КЛ>>UP
CS>Background рисуется вот этой вот brush:
CS>
Который раз проссматриваю приведенный выше код и не могу найти ничего криминального.
Думаю стоит сделать минимальное приложение с проблемным функционалом и при воспроизведении ошибки выложить линк.