Думаю (надеюсь:) ) для многих этот вопрос покажеться простым, если так, то видимо мне помогут :)
Trouble: функция OnDraw выводит монстро-образное изображение, а другая функция (OnMouseMove) должна на нём кое-что интерактивно изменить — создавать лишние переменные для хранения результатов её работы да ещё и перерисовывать каждый раз всё изображение выдет накладно, я решил получить такой же указатель какой передаётся в OnDraw, но увидев список параметров CDC.Create(....) немного обламался :(. Я попробовал обойти это так:
void CMyProgView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
......................................
dc.Detach();
dc.CreateCompatibleDC(pDC);
......................................
}
dc соответственно общая переменная-член класса, в которой хранится подобие pDC в памяти, но вот как её привязать к реальному "девайсу" я не нашёл. Кстати, на поверку она не хранит никакой информации о логических координатах и типе их преобразования — кто-нибудь знает как туда это всё скопировать без конструкций типа
dc.SetSomeParam( pDC->GetSomeParam() ); ?
Заранее благодарен, Борис.
А решалось всё как всегда элементарно:
void CMyProgView::OnMouseMove(UINT nFlags, CPoint point)
{
............................................
CDC* pDC = GetDC();
............................................
}
и рисуй сколько влезет...
— 2 часа жизни

— надеюсь кому-нибудь пригодится.
Здравствуйте Jer, Вы писали:
Jer>Думаю (надеюсь
) для многих этот вопрос покажеться простым, если так, то видимо мне помогут
Jer>Trouble: функция OnDraw выводит монстро-образное изображение, а другая функция (OnMouseMove) должна на нём кое-что интерактивно изменить — создавать лишние переменные для хранения результатов её работы да ещё и перерисовывать каждый раз всё изображение выдет накладно, я решил получить такой же указатель какой передаётся в OnDraw, но увидев список параметров CDC.Create(....) немного обламался
. Я попробовал обойти это так:
Jer>void CMyProgView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
Jer>{
Jer>......................................
Jer> dc.Detach();
Jer> dc.CreateCompatibleDC(pDC);
Jer>......................................
Jer>}
Jer>dc соответственно общая переменная-член класса, в которой хранится подобие pDC в памяти, но вот как её привязать к реальному "девайсу" я не нашёл. Кстати, на поверку она не хранит никакой информации о логических координатах и типе их преобразования — кто-нибудь знает как туда это всё скопировать без конструкций типа
А зачем тебе дополнительный DC? CreateCompatibleDC всегда создает memory DC и то, что рисуется на нем, нужно потом трансферить в основной DC чем-нибудь типа BitBlt.
Мне думается, что тебе лучше создавать не compatible DC, а CompatibleBitmap, а потом делать из него SetDIBitsToDevice на твой DC. Кстати, bitmap тебе в любом случае придется создавать, т.к. CreateCompatibleDC всегда создает DC, в который выбран монохромный битмап 1x1.