Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Интересная конфигурация окон

1.8K
01 апреля 2010 года
LM(AL/M)
332 / / 20.12.2005
Кто догадается как заставить винду (вручную или программно) отрисовать окна как показано на картинке?
[ATTACH]4143[/ATTACH]
307
01 апреля 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: LM(AL/M)
Кто догадается как заставить винду (вручную или программно) отрисовать окна как показано на картинке?
[ATTACH]4143[/ATTACH]



фотошоп!=))))

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

8.4K
01 апреля 2010 года
z0rch
275 / / 02.09.2008
хм,вручную никак, могу предположить что нижнее окно отфотошоплено, больно оно уж чётко подставлено под квадратики..;)
3.7K
01 апреля 2010 года
0nni
326 / / 24.06.2008
Код:
program Project3;

{$ifdef fpc}
{$mode objfpc}
{$endif}


uses
  Windows,
  Messages;

var
  wins : array[0..3] of THandle;

function WndProc(Wnd : HWND; msg : Cardinal; wParam, lParam : Integer) : Integer; stdcall;
var
  TargetWnd : HWND;
  TargetRgn : HRGN;
  Rgn : HRGN;
  TargetRt : TRect;
  rt : TRect;
  pt : TPoint;
begin
case msg of
    WM_DESTROY : PostQuitMessage(0);
    WM_MOVE:
      begin


        if Wnd = wins[0] then TargetWnd := wins[3] else
        if wnd = wins[3] then
          begin
            SendMessage(wins[0], WM_MOVE, 0, 0);
            exit;
          end else
          exit;



        //TargetWnd := GetWindowLong(Wnd, 0);

        GetWindowRect(TargetWnd, TargetRt);
        OffsetRect(TargetRt, -TargetRt.Left, -TargetRt.Top);

        GetWindowRect(Wnd, rt);

        pt := rt.TopLeft;
        ScreenToClient(TargetWnd, pt);

        OffsetRect(rt, -rt.Left + pt.X + GetSystemMetrics(SM_CXFIXEDFRAME) ,
                       -rt.Top + Pt.Y  + GetSystemMetrics(SM_CYFIXEDFRAME) + GetSystemMetrics(SM_CYCAPTION));

        with rt do
        Rgn := CreateRectRgn(Left, top, Right, Bottom);

        with TargetRt do
        TargetRgn := CreateRectRgn(Left, top, Right, Bottom);

        CombineRgn(TargetRgn, TargetRgn, Rgn, RGN_DIFF);

        SetWindowRgn(TargetWnd, TargetRgn, true);

        DeleteObject(TargetRgn);
        DeleteObject(Rgn);
      end;
        else
          Result := DefWindowProc(Wnd, msg, wParam, lParam);
    end
end;

var
  wc : TWndClass;
  msg : TMsg;
begin
  ZeroMemory(@wc, SizeOf(wc));
  wc.style := CS_DBLCLKS or CS_OWNDC;
  wc.lpfnWndProc := @WndProc;
  wc.cbWndExtra := 4;
  wc.hInstance := hInstance;
  wc.hIcon := LoadIcon(0, IDI_APPLICATION);
  wc.hCursor := LoadCursor(0, IDC_ARROW);
  wc.hbrBackground := COLOR_BTNFACE + 1;
  wc.lpszClassName := 'oO32WndClass';
  if not Boolean(RegisterClass(wc)) then
  begin
    //MessageBox(0, PChar('Class <' + wc.lpszClassName + '> is not register'), nil, MB_ICONERROR or MB_SYSTEMMODAL);
    ExitProcess(0)
  end;

  wins[0] := CreateWindow('oO32WndClass', 'oO', WS_VISIBLE or WS_SYSMENU, 150, 150, 180, 180, 0, 0, HInstance, nil);
  wins[1] := CreateWindow('oO32WndClass', 'oO', WS_VISIBLE or WS_SYSMENU, 50,  250, 180, 180, wins[0], 0, HInstance, nil);
  wins[2] := CreateWindow('oO32WndClass', 'oO', WS_VISIBLE or WS_SYSMENU, 150, 350, 180, 180, wins[1], 0, HInstance, nil);
  wins[3] := CreateWindow('oO32WndClass', 'oO', WS_VISIBLE or WS_SYSMENU, 250, 250, 180, 180, wins[2], 0, HInstance, nil);

  SendMessage(wins[0], WM_MOVE, 0, 0);

  while GetMessage(msg, 0, 0, 0) do
  begin
    TranslateMessage(msg);
    DispatchMessage(msg);
  end;

end.

Вот такой говнокод получился =) только с расчетом на классическое оформление.
[ATTACH]4144[/ATTACH]
Бинарник, если кто не боится [ATTACH]4145[/ATTACH]

А вообще у меня были такие приколы в виде, но только с Layer-окнами, они неправильно перекрывались после смены разрешения.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог