Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перерисовка окна [D7, WinXP]


Creative ©   (2006-04-25 14:32:00) 

есть код

function WndProc(hwnd, message: DWORD; wParam, lParam: Integer): Integer; stdcall;
var
Up: boolean;
PS: TPaintstruct;
DC: HDC;
begin
dc := GetDC (hwnd);
case message of
WM_CREATE :
     begin
       Hwnd_main:= hwnd;
     end;
WM_PAINT:
     begin
       if Up = true then
       begin
         DC:= BeginPaint(hwnd_main, ps);
         { Рисовать неважно что - 1 }
         EndPaint(hwnd_main, ps);
       end;
       if Up = false then
       begin
         DC:= BeginPaint(hwnd_main, ps);
         { Рисовать неважно что - 2 }
         EndPaint(hwnd_main, ps);
       end;

WM_LBUTTONDOWN:
  begin
    If Up = true then
       Up:= false;
    invalidateRect(hwnd_main,nil, false);  
    If Up = false then
       Up:= true;
    invalidateRect(hwnd_main,nil, false);
  end;
end;

Проблема:
1. Строки о присвоении нового значения Up программа игнорирует.
2. Как следствие никакой перерисовки не происходит.

Укажите пожалуйста, что неправильно?


Creative   (2006-04-25 14:51:00) [1]

> Eraser ©   (25.04.06 14:42) [1]
> А объявить Up как глобальную переменную не пробовал? :-)

Попробовала :-)

To Eraser, MBo

Спасиобо огромное, все получилось.
Красота в простоте :-)


MBo   (2006-04-25 14:47:00) [2]

>Eraser ©   (25.04.06 14:42) [1]

А я слона и не приметил за кучей ненужного  :-)


Eraser   (2006-04-25 14:42:00) [3]


> Creative   (25.04.06 14:32)

А объявить Up как глобальную переменную не пробовал? :-)


MBo   (2006-04-25 14:42:00) [4]

dc := GetDC (hwnd); - Это - выкинуть

Hwnd_main:= hwnd; - это тоже

WM_PAINT:
    begin
        DC:= BeginPaint(hwnd, ps);
          if Up then
            { Рисовать неважно что - 1 }
         else
            { Рисовать неважно что - 2 }
        EndPaint(hwnd, ps);
      end;

WM_LBUTTONDOWN:
 begin
    Up :=  not Up;
    invalidateRect(hwnd,nil, false);  
 end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо