MFC или WinAPI
От: Аноним  
Дата: 22.07.04 07:52
Оценка:
есть диалог, привязанный ко вкладке CTabCtrl.
на этом диалоге лежит GroupBox.
в обработчике OnPaint() диалога вкладки пытаюсь вывести текст не в контрол, а просто на диалог (типа нарисовать) через DrawText().

просто на диалог вывести получается, а когда хочу вывести в область где расположен GroupBox, то ничего не выводится.

расскажите пожалуйста как вывести текст в облась GroupBox'а.

спасибо.
Re: MFC или WinAPI
От: rus blood Россия  
Дата: 22.07.04 08:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>расскажите пожалуйста как вывести текст в облась GroupBox'а.


Взять контекст DC у group box-а и нарисовать на нем.
Только надо будет завалидировать эту область, чтобы сам GroupBox ее потом не закрасил.
А вообще, лучше свой контрол сделать на основе GroupBox, или просабкласится к нему, чтобы дорисовывать текст.
Имею скафандр — готов путешествовать!
Re: MFC или WinAPI
От: lubichevav  
Дата: 22.07.04 08:23
Оценка:
Здравствуйте, Аноним

Получить контекст GroupBox-а и вывести текст на нем
Re[2]: MFC или WinAPI
От: Аноним  
Дата: 22.07.04 08:29
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Взять контекст DC у group box-а и нарисовать на нем.

RB>Только надо будет завалидировать эту область, чтобы сам GroupBox ее потом не закрасил.
RB>А вообще, лучше свой контрол сделать на основе GroupBox, или просабкласится к нему, чтобы дорисовывать текст.

а что значит завалидировать область и как это сделать???
Re[3]: MFC или WinAPI
От: rus blood Россия  
Дата: 22.07.04 08:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а что значит завалидировать область и как это сделать???


При отрисовке сначала рисуется диалог, потом — контролы на нем.

При отрисовке на WM_PAINT всегда имеется невалидная зона, которая и отрисовывается.
Рисование вне зоны невалидности через DC полученный из BeginPaint (или CPaintDC) невозможно.
После того, как ты отрисовал текст на контроле, и уверен, что больше там ничего не должно быть, нужно указать, что эту часть ты уже отрисовал и больше рисовать там не требуется. Что-то типа ValidateRect(...) для окна контрола с указанием нужного прямоугольника.
Имею скафандр — готов путешествовать!
Re[3]: MFC или WinAPI
От: maximilian Украина  
Дата: 22.07.04 08:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, rus blood, Вы писали:


RB>>Взять контекст DC у group box-а и нарисовать на нем.

RB>>Только надо будет завалидировать эту область, чтобы сам GroupBox ее потом не закрасил.
RB>>А вообще, лучше свой контрол сделать на основе GroupBox, или просабкласится к нему, чтобы дорисовывать текст.

А>а что значит завалидировать область и как это сделать???


ValidateRect
ValidateRgn

"завалидировать" — указать область, которую не нужно перерисовывать.

Например: вызов InvalidateRect(hWnd, NULL, TRUE) приведет к тому, что весь DC будет инвалидным, т.е. его содержимое не отражает реальной картины и должно быть обновлено. При этом можно вызвать Validate* с указанием области, которую перерисовывать не нужно.
Re[2]: MFC или WinAPI
От: Michail_TV  
Дата: 22.07.04 10:31
Оценка:
Здравствуйте, lubichevav, Вы писали:
L>Получить контекст GroupBox-а и вывести текст на нем

можно кодом — как получить контекст groupBox'а ?
Get... что ?
Re[3]: MFC или WinAPI
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 22.07.04 10:46
Оценка:
Здравствуйте, Michail_TV, Вы писали:

M_T>Здравствуйте, lubichevav, Вы писали:

L>>Получить контекст GroupBox-а и вывести текст на нем

M_T>можно кодом — как получить контекст groupBox'а ?

M_T>Get... что ?

GetDC(), GetWindowDC()
- Искренне ваш, Поросенок Пафнутий
Re[4]: MFC или WinAPI
От: Michail_TV  
Дата: 22.07.04 11:03
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>GetDC(), GetWindowDC()

HDC GetDC(
HWND hWnd // handle of window
);
а где же у groupbox'а window ?
или как сказать этому окну, что мне надо именно groupbox ?

я знаю что не спец, но должна же быть логика...
Re[5]: MFC или WinAPI
От: rus blood Россия  
Дата: 22.07.04 11:05
Оценка:
Здравствуйте, Michail_TV, Вы писали:

M_T>я знаю что не спец, но должна же быть логика...


GroupBox у тебя на диалоге лежит?
У него ID имеется в ресурсах?
Тогда его хендл можно получить так


GetDlgItem(<id of control>);
Имею скафандр — готов путешествовать!
Re[6]: MFC или WinAPI
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 22.07.04 11:07
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Здравствуйте, Michail_TV, Вы писали:


M_T>>я знаю что не спец, но должна же быть логика...


RB>GroupBox у тебя на диалоге лежит?

RB>У него ID имеется в ресурсах?

При этом ID желательно назначить отличным от "стандартного" IDC_STATIC.
- Искренне ваш, Поросенок Пафнутий
Re[6]: MFC или WinAPI
От: Michail_TV  
Дата: 22.07.04 11:10
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>
RB>GetDlgItem(<id of control>);
RB>


спасибо
тогда наверно можно получить хендл чего угодно ?
Re[7]: MFC или WinAPI
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 22.07.04 11:19
Оценка:
Здравствуйте, Michail_TV, Вы писали:

M_T>Здравствуйте, rus blood, Вы писали:


RB>>
RB>>GetDlgItem(<id of control>);
RB>>


M_T>спасибо

M_T>тогда наверно можно получить хендл чего угодно ?

Ага.
- Искренне ваш, Поросенок Пафнутий
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.