![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 16.12.2010
Сообщений: 6
|
![]()
В проге представленно рисование на не клиентской области окна,но когда окно становится не активным,то цвет кисти исчезает.Как сделать,чтобы окно всегда оставалось зеленым?
program Win1; uses Windows, Messages, SysUtils; var WndClass: TWndClass; szAppName: PChar; WinHandle: HWnd; Msg: TMsg; I, J: Integer; Cnt: integer; function MyWndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var Brush: HBrush; R, R2, R1,R3: TRect; ps: TPaintStruct; Context: HDC; Font: HFont; PR: PRect; Pen:HPen; begin case Msg of WM_PAINT: begin Context := GetDC(hWnd); try Inc(Cnt); GetClientRect(hWnd, R); Brush := CreateSolidBrush($0cb520); SelectObject(Context, Brush); try Rectangle(Context,R.Left,R.Top,R.Ri ght,R.Bottom); finally DeleteObject(Brush); end; Font := CreateFont(0, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, 'Monotype Corsiva'); Brush := CreateHatchBrush(HS_DIAGCROSS ,$7f0cb5); SelectObject(Context, Brush); SelectObject(Context, Font); try R1.left := i - 100; R1.top := 10; R1.right := i - 100 + 150; R1.bottom := 45; R2.left := i - 100 + {1280} R.Right - R.Left; R2.top := 10; R2.right := i - 100 + 150 + {1280} R.Right - R.Left; R2.bottom := 45; Randomize; DrawText(Context, 'Hello, Windows! =)', -1, R1, DT_SINGLELINE or DT_CENTER or DT_VCENTER); DrawText(Context, 'Hello, Windows! =)', -1, R2, DT_SINGLELINE or DT_CENTER or DT_VCENTER); // end // else i :=0 ValidateRect(hwnd, @R); finally DeleteObject(Font); DeleteObject(Brush); end; finally ReleaseDC(hWnd, Context); Result := 0; end; end; WM_TIMER: begin GetClientRect(hWnd, R); if i < {1220} R.Right - R.Left then Inc(I, 20) else i := 0; InvalidateRect(hWnd, nil, True); end; WM_NCPAINT: begin GetWindowRect(hwnd,R3); DefWindowProc(hwnd, msg, wParam, lParam); Context:=GetWindowDC(hwnd); try Pen:=CreatePen(PS_SOLID,2024,$0cb52 0); SelectObject(context,Pen); MoveToEx(Context,0,0,nil); LineTo(Context,r3.right,0); SelectObject(Context,GetStockObject (NULL_PEN)); ReleaseDC(hwnd,Context); result:=0 finally DeleteObject(Pen); end; end; WM_SIZING: begin PR := pointer(lParam); // Dec(PR.Top); if PR.Right - PR.Left < 400 then PR.Right := PR.Left + 400; if Pr.Bottom - PR.Top < 100 then Pr.Bottom := PR.Top + 100; Result := 0; end; WM_DESTROY: begin PostQuitMessage(0); Result := 0; end; else Result := DefWindowProc(hWnd, Msg, wParam, lParam); end; end; begin szAppName := 'Hello win'; Cnt := 0; WndClass.Style := CS_HREDRAW or CS_VREDRAW; WndClass.lpfnWndProc := @MyWndProc; WndClass.cbClsExtra := 0; WndClass.cbWndExtra := 0; WndClass.hInstance := HInstance; WndClass.hIcon := LoadIcon(HInstance,IDI_APPLICATION) ; WndClass.hCursor := LoadCursor(HInstance,IDC_ARROW); WndClass.hbrBackground := GetStockObject(White_BRUSH); WndClass.lpszMenuName := nil; WndClass.lpszClassName := szAppname; RegisterClass(WndClass); WinHandle := CreateWindow(WndClass.lpszClassName , // window class name 'The Hello Program', // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position 1280, // initial x size 720, // initial y size 0, // parent window handle 0, // window menu handle HInstance, // program instance handle nil); // creation parameters I := 0; J := 0; SetTimer(WinHandle, 1, 200, nil); ShowWindow(WinHandle, SW_SHOW); UpdateWindow(WinHandle); while GetMessage(Msg, 0, 0, 0) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перерисовка/обновление клиентской области окна | ImmortalAlexSan | Общие вопросы Delphi | 0 | 09.01.2011 16:19 |
Установить размер клиентской обл. окна | Ulex | Win Api | 0 | 12.04.2010 01:47 |
Как узнать размер клиентской части окна? | Belfigor | Общие вопросы Delphi | 4 | 03.03.2010 13:00 |
как растянуть див на всю высоту клиентской части окна браузера | Anopsa - Anna | HTML и CSS | 3 | 21.09.2009 10:07 |
Прозрачность в клиентской части окна. | Ivan_32 | Win Api | 2 | 06.02.2009 15:53 |