Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Drag and Drop с минимизированным приложением

Автор: Neil J. Rubenking

В ситуации, когда ваше приложение минимизировано, необходимо понимать, что окно главной формы НЕ работает. Фактически, если вы проверяете окно главной формы, и обнаруживаете, что оно имеет прежний размер, не удивляйтесь, оно просто невидимо. Иконка минимизированного Delphi-приложения принадлежит объекту Application, чей дескриптор окна - Application.Handle.

Вот некоторый код из моей программы, который с помощью компонента CheckBox проверяет возможность принятия перетаскиваемых файлов минимизированным приложением:


procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
{Вызывается только если TApplication НЕ получает drag/drop}
begin
  RecordDragDrop(Msg.Drop, False); {внутренняя функция}
  Msg.Result := 0;
end;

procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
{когда активно, получаем сообщения WM_DROPFILES, посылаемые
форме ИЛИ минимизированному приложению}
begin
  if Msg.message = WM_DROPFILES then
  begin
    RecordDragDrop(Msg.wParam, Msg.hWnd = Application.Handle);
    Handled := True;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True);
  DragAcceptFiles(Application.Handle, False);
  Application.OnMessage := nil;
end;

OK? Первоначально вызов DragAcceptFiles работает с дескриптором главной формы...

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay