Доступ к pDC
От: juks http://juks.ru
Дата: 15.07.03 22:19
Оценка:
Как можно достать pDC из своего класса, а не из "...::OnDraw(CDC* pDC)". Хочу сделать класс, который мог бы рисовать в нём.

Спасибо.
Re: Доступ к pDC
От: Nata1111 Латвия https://smartprogress.do/user/25453/
Дата: 15.07.03 22:54
Оценка:
Здравствуйте, juks, Вы писали:

J>Как можно достать pDC из своего класса, а не из "...::OnDraw(CDC* pDC)". Хочу сделать класс, который мог бы рисовать в нём.


J>Спасибо.


Получаешь указатель на активный вид:

CFrameWnd* pFrameWnd=(CFrameWnd*)AfxGetMainWnd();
CView* pView = pFrameWnd->GetActiveView();

и затем DC:

CDC* pDC=pView->GetDC();
Re[2]: Доступ к pDC
От: alexey kur  
Дата: 16.07.03 01:50
Оценка:
Здравствуйте, Nata1111, Вы писали:

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


J>>Как можно достать pDC из своего класса, а не из "...::OnDraw(CDC* pDC)". Хочу сделать класс, который мог бы рисовать в нём.


J>>Спасибо.


N>Получаешь указатель на активный вид:


N>
N>CFrameWnd* pFrameWnd=(CFrameWnd*)AfxGetMainWnd();
N>CView* pView = pFrameWnd->GetActiveView();
N>

N>и затем DC:

N>
N>CDC* pDC=pView->GetDC();
N>


затем не забудь вызвать

ReleaseDC(pDC);
Re: Доступ к pDC
От: Кирпа В.А. Украина  
Дата: 16.07.03 05:39
Оценка:
Здравствуйте, juks, Вы писали:

J>Как можно достать pDC из своего класса, а не из "...::OnDraw(CDC* pDC)". Хочу сделать класс, который мог бы рисовать в нём.


J>Спасибо.


В своем классе проще так


CClientDC DC(this);
!0xDEAD
Re: Доступ к pDC
От: Yaumen  
Дата: 16.07.03 09:50
Оценка:
Здравствуйте, juks, Вы писали:

J>Как можно достать pDC из своего класса, а не из "...::OnDraw(CDC* pDC)". Хочу сделать класс, который мог бы рисовать в нём.


J>Спасибо.


Если у тебя класс производный от CWnd или выше по иерархии классов, то достаточно написать:


CDC * pDC = GetDC();



но обязательно, по окончании использования


ReleaseDC(pDC);
Re[2]: Доступ к pDC
От: Кирпа В.А. Украина  
Дата: 16.07.03 10:03
Оценка:
Здравствуйте, Yaumen, Вы писали:

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


J>>Как можно достать pDC из своего класса, а не из "...::OnDraw(CDC* pDC)". Хочу сделать класс, который мог бы рисовать в нём.


J>>Спасибо.


Y>Если у тебя класс производный от CWnd или выше по иерархии классов, то достаточно написать:



Y>
Y>CDC * pDC = GetDC();
Y>



Y>но обязательно, по окончании использования



Y>
Y>ReleaseDC(pDC);
Y>


Для рисования в клиентской части окон существует специальный класс контекста CClientDC
Он в конструкторе автоматически вызывает API GetDC а в деструкторе автоматически вызывает API ReleseDC
И не надо заботится что где-то пропустишь ReleseDC
!0xDEAD
Re[2]: Доступ к pDC
От: juks http://juks.ru
Дата: 21.07.03 21:35
Оценка:
спасибо
Re[3]: Доступ к pDC
От: juks http://juks.ru
Дата: 21.07.03 21:37
Оценка:
Здравствуйте, alexey kur, Вы писали:

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


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


J>>>Как можно достать pDC из своего класса, а не из "...::OnDraw(CDC* pDC)". Хочу сделать класс, который мог бы рисовать в нём.


J>>>Спасибо.


N>>Получаешь указатель на активный вид:


N>>
N>>CFrameWnd* pFrameWnd=(CFrameWnd*)AfxGetMainWnd();
N>>CView* pView = pFrameWnd->GetActiveView();
N>>

N>>и затем DC:

N>>
N>>CDC* pDC=pView->GetDC();
N>>


AK>затем не забудь вызвать


AK>
AK>ReleaseDC(pDC);
AK>


спасибо, попробую
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.