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


Автор: Neighbour 14.4.2006, 08:32
Нужно при выборе одного пункта меню выводить в окно несколько строк текста, другого пункта - рисовать несколько геометрических фигур, третьего пункта - очищать экран.


Если рисовать (выводить текст) в обработчике выбора пункта меню при помощи GetDC - при перерисовке окна рисунки(текст) исчезают. Попробовал использовать глобальные логические переменные (одну для текста, другую для рисунков).
В обработчике выбора соответствующего пункта меню устанавливаю значение одной переменной в истину - другой в ложь. Рисую все в WM_PAINT (если истина - пользовательским цветом, если ложь - цветом окна)
Однако результат лишь при перерисовке окна.

Вопросы:

1. Как искуственно заставить приложение при выборе пункта меню перерисовать окно?

2. Может данную задачу можно решить как-нибудь по-другому?

Автор: chaos 14.4.2006, 08:36
Цитата(Neighbour @ 14.4.2006, 08:32)
1. Как искуственно заставить приложение при выборе пункта меню перерисовать окно?


InvalidateRect

Добавлено @ 08:41
может сделать так(некий язык smile ):
Код

int nSelect = 0;

void OnMenu1()
{ nSelect = 1;}

void OnMenu2()
{ nSelect = 2;}

void OnMenu3()
{ nSelect = 3;}

void OnPaint()
{
    switch(nSelect)
    {
        case 1:
            PrintText();
            break;
        case 2:
            PrintShape();
            break;
        case 3:
            ClearArea();
            break;
        default:
            //что то другое
    }
}

Автор: Neighbour 14.4.2006, 13:04
To chaos

Спасибо, ты имеешь в виду перенести обработку меню в WM_PAINT?

Автор: Fixin 15.4.2006, 15:58
Цитата(Neighbour @ 14.4.2006, 13:04 Найти цитируемый пост)
перенести обработку меню в WM_PAINT?
Нет, он говорит о выносе процедур рисования, вывода текста и очистки в отдельные процедуры. Причем эти процедуры должны быть достаточно оптимизированы.

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