Автор
|
Тема: Рисование под MFC
|
Kosha |
опубликован 06-04-2001 23:05 MSK
Народ! Подскажите, как разрешить ситуевину: Есть диалогбар, и в нем нужно риал-таймом рисовать всякую всячину. Так вот: как эту всячину в нем нарисовать? (Контрол какой, или просто какая-то работа с CDC?) Желательно с фрагментом кода. Заранее спасибки.
|
purpe
|
опубликован 06-04-2001 23:57 MSK
я такое проделывал в CFormView :)void CMyDialog::OnPaint() { CPaintDC dc(this); dc.Ellipse(x1,y1,x2,y2) //рисуем элипс dc.TextOut(x1,y1,strText); //выводим текст dc.MoveTo(x1,y1); //передвигаемся в точку dc.LineTo(x2,y2); //рисуем из этой точки линию } Поидее рисоваться должно прямо на диалоге :)
|
OlegO
|
опубликован 07-04-2001 10:39 MSK
как сказал purpe будет 100% работать и для Диалога. работа идет через CDC как и для обычных окон. только рисовать будет в Клиентской Области. |
Kosha
|
опубликован 07-04-2001 11:12 MSK
Оно-то конечно, оно естественно. Только вот не пашет. Вернее, официально, делает вид что пашет. А в реальности - не рисует. Я создаю CPaintDC (в CView::OnUpdate) из взятого через GetParent() диалога класса СChildFrame. Все CWND проверял, все соответствует действительности. Пробовал и создавать CDC через GetDC/ReleaseDC, и все равно ;-((((((( |
Kosha
|
опубликован 07-04-2001 11:16 MSK
В смысле, не диалог класса CChildFrame, а в мемберах CChildFrame'а прописан CDialogBar (какой-то-там-диалогбар); Проверял для простого диалога (НЕ ДИАЛОГБАРА!) - работает ;-)))))) а для бара - не работает :-(((((( может, как-то я не так CPaintDC крэйтю? |
Ars80
|
опубликован 07-11-2001 17:24 MSK
Пиши вместо CPaintDC CClientDC :) |
Kosha
|
опубликован 07-11-2001 17:37 MSK
2Ars80: Ты не путай народ ;-) Дата сообщений-то какая ;-) |
maxvid
|
опубликован 08-11-2001 06:31 MSK
Слушайте, а после рисования может нужно вызвать InvalidateRect(NULL); чтоб обновилась клиентская область?? Или я что-то не понимаю
|
Kosha
|
опубликован 08-11-2001 09:35 MSK
Неа. Просто нужно взять грамотно и сделать. В рисовании на диалогбаре надо осторожно все делать. Потом, нужно убрать на фиг флаг ERASEBACKGROUND или что-то в этом духе.
|