Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Перекрытие клиентской области


Автор: AndrRus 6.3.2008, 23:23
Недавно начал изучать MFC и решил попробовать на практике свои знания. И возникла проблема:
Запускаю диалоговое окно из меню, в котором выбираю нужные параметры для вывода того или иного изображения в клиентскую область. Вывод изображения осуществляется в следующей функции:
Код

void CChildView::OnAdjustmentsStartawindow() {
    INT_PTR dlgCheck;
    CMyDialog dlgFirst;
    dlgFirst.m_strColor = "Black";
    dlgCheck = dlgFirst.DoModal ();
    if (dlgCheck == IDOK) {
        if (dlgFirst.m_bCheck == TRUE) {
            CPaintDC dc (this);
            // Конструируется изображение по параметрам заданным в диалоговом окне.
        }
    }
}

Но проблема в том, что рисование производится только в той области, где диалоговое окно перекрывало клиентскую область. Как я понимаю, это все по причине того, что я использую рисование только в границах диалогового окна? Как разрешить это проблему?

Автор: Earnest 7.3.2008, 10:38
Рисование (во вью) должно быть отдельным методом - обработчиком OnPaint - ведь рисовать нужно не только после вызова диалога, но и в других ситуациях - скажем, восстанавливать картинку после перекрытия другими окнами и т.д.
А после dlgFirst.DoModal просто вызови Invalidate(). А введенные параметры, конечно, нужно запиоминать в переменных вью, чтобы использовать их в любой момент.

Автор: AndrRus 7.3.2008, 16:51
Действительно, спасибо за мысль, премного благодарен!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)