Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
#1

Как перерисовать всю клиентскую область? - C++

12.07.2010, 00:27. Просмотров 1449. Ответов 7
Метки нет (Все метки)

Всем доброго времени суток. Подскажите пожалуйста, как заставить свое окно перерисовываться полностью в момент его неактивности?
Например, когда его частично закрыть другим окном, после чего открыть - перерисовывается та закрытая часть но не вся клиентская область. Как перерисовать всю клиентскую область?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2010, 00:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как перерисовать всю клиентскую область? (C++):

Как скрестить службу и клиентскую часть для вин2к/винХР - C++
Проблема насущная, может кто сталкивался с чем-то подобным.... Мне надо написать службу, которая бы могла вмешиваться в работу...

Как можно перерисовать елементы класса CToolBar? - C++
Как можно перерисовать елементы класса CToolBar?

Как очистить всю строку? - C++
У меня есть строка, в этой строке я храню информацию, потом ее вывожу на экран. Как сделать так, чтобы эта строка стала пустой и можно было...

Как прочитать всю строку? - C++
TArray <std::wstring> Result; std::string Buffer; std::ifstream File; std::wcout<<"Opening the project...

Как записать всю последовательность в файл? - C++
Собственно как это сделать??? Простым не грамозским способом ,а грамозским я знаю как :D #include <conio.h> #include <stdio.h> ...

Как вывести на дисплей всю очередь? - C++
Здравствуйте, у меня есть вопрос, как вывести на дисплей всю очередь, а то у мене сейчас выводит только первую и последнюю записи ...

7
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
12.07.2010, 00:35 #2
можно воспользоваться RedrawWindow

C++
1
2
3
4
5
6
7
8
BOOL WINAPI RedrawWindow(
  HWND hwnd,
  CONST RECT* lprcUpdate,
  HRGN hrgnUpdate,
  UINT flags
);
 
RedrawWindow(hwnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);
0
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
12.07.2010, 01:02  [ТС] #3
Так тоже не перерисовует, возможно что я не так что-то делаю.
Параметр 2 (CONST RECT* lprcUpdate) это область прорисовки? ( например через GetClientRect(hWnd, &rect) )
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
12.07.2010, 01:13 #4
да, но мсдн грит, что можно оставить NULL для перерисовки всего
проверить не могу - не под виндой
0
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
12.07.2010, 12:55 #5
C
1
2
3
BOOL UpdateWindow(
    HWND hWnd   // дескриптор окна
);
не то?
0
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
12.07.2010, 22:41  [ТС] #6
Это тоже не то.
Не пойму почему при перемещении или изменении размеров окна WM_PAINT обновляет всю клиентскую область, а если его частично закрыть другим окном, после чего открыть - перерисовывается только та закрытая часть но не вся клиентская область?!

Дело в том что при изменении размеров или перемещении по экрану моего окна, оно плавно меняет свой фон, но в момент его частичного перекрытия другим окном фон меняется только в той перекрытой области а не во всём окне.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
12.07.2010, 22:47 #7
Цитата Сообщение от jonson Посмотреть сообщение
после чего открыть - перерисовывается только та закрытая часть но не вся клиентская область?!
потому что требуется перерисовать только часть окна, а программисту уже решать, сколько перерисовывать, вызывая InvalidateRect
1
jonson
234 / 207 / 61
Регистрация: 18.03.2010
Сообщений: 750
12.07.2010, 22:59  [ТС] #8
Спасибо alex_x_x, вот так все работает.

C++
1
2
3
4
5
6
case WM_SYNCPAINT:
    {
            GetClientRect(hWnd, &rect);
            InvalidateRect(hWnd, &rect, true);
            break;
    }
0
12.07.2010, 22:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2010, 22:59
Привет! Вот еще темы с ответами:

Как очистить и вывести всю очередь? - C++
Привет)Помоги написать 2 функции. Мои наработки воть: #include <iostream> using namespace std; struct Node { int data; Node...

Растянуть контрол на всю клиентскую область - C#
добрый вечер! для С# мне нужна альтернатива свойству Align из Delphi со значением AllClient - то есть чтобы компонент занял всю...

Как сделать клиентскую область формы во весь экран - Delphi
нужна помощь вот в каком деле ShowWindow(Result, SC_MAXIMIZE); не катит нуна сделать форму во весь экран т.е. что бы не было видно вот...

Как расположить клиентскую область стороннего окна в определённой позиции экрана - C#
Собственно, задача проста: надо расположить стороннее приложение так, что бы его клиентская область начиналась с позиции Х, Y и была...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru