Конференция "Начинающим" » Отобразить кнопку на панели задач (TaskBar)
 
  • TIF © (22.10.09 03:49) [0]
    для приложения без форм. Как это реализовать?

    Манипуляции с Application.Handle через ShowWindow/SetWindowLong не помогли
  • Германн © (22.10.09 03:56) [1]

    > TIF ©   (22.10.09 03:49)
    >
    > для приложения без форм.

    А что имеется в виду? WinAPI о формах вообще не знает ничего.
  • TIF © (22.10.09 04:12) [2]
    > А что имеется в виду?

    VCL Forms Application из которого удаляется форма с юнитом, создаваемые по-умолчанию (вместо них создаётся новый чистый Unit.pas). Итого = Unit.pas + Project.dpr

    Ну или если попроще, то просто минимальный Project.dpr:
    program Project;
    uses
      ...
    begin
      ...
    end.

  • guard_gg (22.10.09 06:24) [3]
    Дело в том что такой проект мало чем отличается пустого проекта на Pascal.
    Если дополнить этот проект директивой {$APPTYPE CONSOLE} (или создать New->Others->ConsoleApplication) то проект дополнится консолевким окном и принципы работы с этим окном фактически не будут отличатся от Pascal.

    Но! Эта программа - всего лишь просто процесс, он будет сидеть в диспетчере задач но окна у него нет.
    Для того чтобы у него появилось окно, нужно сначала зарегистрировать через WinAPI новый класс окна, а далее создать через тот же WinAPI новое окно и вручную обрабатывать все сообщения которые посылает в это окно пользователь и система.

    Только после создания окна, на таскбаре автоматически генерируется кнопка с заголовком окна и иконкой назначенной нашему приложению.
    Если я не ошибаюсь эта будет та иконка что отображается и в проводние виндовс, соответственно эта же иконка будет и в левом верхнем углу заголовка окна. В WinAPI вероятно имеются специальные функции для гибкой настройки всего вышеперечисленного но это нужно читатать и изучать WinAPI.

    Пока не изучите базовые принципы работы WinAPI то врядли сможете стать хорошим программистом так как даже использую VCL необходимо понимать как она работает.
  • Игорь Шевченко © (22.10.09 11:19) [4]

    > Ну или если попроще, то просто минимальный Project.dpr:
    > program Project;
    > uses
    >   ...
    > begin
    >   ...
    > end.


    И откуда возьмется Application.Handle ?
  • Anatoly Podgoretsky © (22.10.09 11:34) [5]
    Из первых ...
  • TIF © (23.10.09 00:01) [6]
    > И откуда возьмется Application.Handle ?

    Ну наверное из
    uses forms;



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

    То есть категорично "нет окна - не будет и кнопки"? Кнопка всегда связана с каким-либо окном?

    Ок. Допустим что никакой лазейки создания кнопки для процесса нет, но ведь Application - это как раз и есть самое главное окно delphi-приложения, только невидимое?
    Окно, значит, есть... (или у меня ошибка в рассуждениях). А как для него кнопку-то сотворить для него?
  • Игорь Шевченко © (23.10.09 00:12) [7]
    RTFS: TApplication.Run
  • TIF © (23.10.09 03:48) [8]
    > TApplication.Run

    Посмотрел. Про кнопку ничего не увидел, намёк не понял :(
  • Игорь Шевченко © (23.10.09 11:21) [9]

    > Посмотрел. Про кнопку ничего не увидел, намёк не понял


    Посмотри еще раз. Если нет главной формы, нет обработки сообщений, откуда кнопка возьмется ?
 
Конференция "Начинающим" » Отобразить кнопку на панели задач (TaskBar)
Есть новые Нет новых   [134433   +25][b:0][p:0.001]