Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.11.2010, 11:01
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию Заставить окно перерисоваться

Добрый день, форумчане, зациклился на одной проблеме и никак не могу ее решить, поиск так же не помог. Чего-то я не догоняю.

У меня есть код, взятый из примеров по GDIPlus
Код:
program GDITEST8;

uses
  Windows,
  Messages,
  SysUtils,
  GDIPAPI,
  GDIPOBJ;

Procedure OnPaint(DC: HDC);
var
  graphics : TGPGraphics;
  pen: TGPPen;
begin
  graphics := TGPGraphics.Create(DC);
  pen:= TGPPen.Create(MakeColor(255, 0, 0, 255));
  graphics.DrawLine(pen, 0, 0, random(200), random(200));
  graphics.Free;
  pen.Free;
end;


function WndProc(Wnd : HWND; message : UINT; wParam : Integer; lParam: Integer) : Integer; stdcall;
var
  Handle: HDC;
  ps: PAINTSTRUCT;
begin
  case message of
    WM_PAINT:
      begin
        Handle := BeginPaint(Wnd, ps);
        OnPaint(Handle);
        EndPaint(Wnd, ps);
        result := 0;
      end;

    WM_KEYUP:
      case wParam of
      VK_ESCAPE:
        begin
        PostQuitMessage(0);
        result := 0;
        end;
      VK_SPACE:
        begin
        //
        Result:=0;
        end;
      else
        Result:=0;
      end;
      
    WM_DESTROY:
      begin
        PostQuitMessage(0);
        result := 0;
      end;

   else
      result := DefWindowProc(Wnd, message, wParam, lParam);
   end;
end;

var
  hWnd     : THandle;
  Msg      : TMsg;
  wndClass : TWndClass;
begin
   wndClass.style          := CS_HREDRAW or CS_VREDRAW;
   wndClass.lpfnWndProc    := @WndProc;
   wndClass.cbClsExtra     := 0;
   wndClass.cbWndExtra     := 0;
   wndClass.hInstance      := hInstance;
   wndClass.hIcon          := LoadIcon(0, IDI_APPLICATION);
   wndClass.hCursor        := LoadCursor(0, IDC_ARROW);
   wndClass.hbrBackground  := HBRUSH(GetStockObject(WHITE_BRUSH));
   wndClass.lpszMenuName   := nil;
   wndClass.lpszClassName  := 'GettingStarted';

   RegisterClass(wndClass);

   hWnd := CreateWindow(
      'GettingStarted',       // window class name
      'Drawing a Line',       // window caption
      WS_OVERLAPPEDWINDOW,    // window style
      Integer(CW_USEDEFAULT), // initial x position
      Integer(CW_USEDEFAULT), // initial y position
      Integer(CW_USEDEFAULT), // initial x size
      Integer(CW_USEDEFAULT), // initial y size
      0,                      // parent window handle
      0,                      // window menu handle
      hInstance,              // program instance handle
      nil);                   // creation parameters

   ShowWindow(hWnd, SW_SHOW);
   UpdateWindow(hWnd);


   while(GetMessage(msg, 0, 0, 0)) do
   begin

      TranslateMessage(msg);
      DispatchMessage(msg);
   end;

end.
В выделенном месте мне надо заставить окно перерисоваться, а точнее вызвать OnPaint для моего окна, пробовал по разному, но никак не добиться желаемого результата.

Так же, хотелось бы попросить ссылочку на адекватный обзор GDIPlus, его минусы и плюсы, и ваше мнение по использованию данной библиотеки.
Ответить с цитированием
  #2  
Старый 22.11.2010, 18:16
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Цитата:
Сообщение от MSDN

BOOL InvalidateRect(
__in HWND hWnd,
__in const RECT *lpRect,
__in BOOL bErase
);
статья по GDI+:
http://www.rsdn.ru/article/gdi/gdiplus1.xml
http://www.rsdn.ru/article/gdi/gdiplus2mag.xml
http://www.rsdn.ru/article/gdi/gdiplus3.xml

Библиотека отлично подойдет для всякой сложной графики. Для простой тоже подойдет, но тут уже GDI побыстрее будет.
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter