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

Delphi Sources



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

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.02.2008, 15:14
MagestiK MagestiK вне форума
Прохожий
 
Регистрация: 30.12.2007
Сообщения: 25
Репутация: 10
Плохо Панель инструментов

Люди подскажите как мне можно чтобы моя прога добавлялась в панель задач к это делает ВинДос Медиа Плаер ?
  #2  
Старый 23.02.2008, 11:02
НичеНепониаю НичеНепониаю вне форума
Новичок
 
Регистрация: 25.01.2008
Сообщения: 52
Репутация: 10
По умолчанию

Это можно итак сделать просто. Нажми на панель задач правой кнопкой мыши. Далее действуй:

Панели Инструментов>Создать Панель Инстреументов...

И выбираешь свою программу..
__________________
НичеНепонимаю Савсем! Кто объяснит мне тот получит конфетку!!!
  #3  
Старый 27.02.2008, 11:16
neo7777 neo7777 вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от НичеНепониаю
Это можно итак сделать просто. Нажми на панель задач правой кнопкой мыши. Далее действуй:

Панели Инструментов>Создать Панель Инстреументов...

И выбираешь свою программу..

как это сделать программно?

другими словами, как форму сделать панелью на панели задач?
  #4  
Старый 27.02.2008, 12:36
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от neo7777
как это сделать программно?

другими словами, как форму сделать панелью на панели задач?

Необходимо найти хэндл панели задач FindWindow - это классы Shell_trayWnd -> SysTabControl32

Получить дескриптор устройства GetDC

Отрисовать свою форму на этом дескрипторе
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
  #5  
Старый 27.02.2008, 12:59
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Код:
const
  { Сообщения от пиктограммы на панели задач }
  IconMessage = WM_User + 300;
type
  TfmMain = class(TForm)
    pmIcon: TPopupMenu;  // Меню для пиктограммы
    pmIconSetup: TMenuItem;
    pmIconabout: TMenuItem;
    pmIconClose: TMenuItem;
...
  private
    { Private declarations }
    FIcon: TIcon;                   // Новая пиктограмма
    FiOldIcon: Integer;             // Старая пиктограмма
...
    procedure OnWinIconMes(var AMessage: TMessage); message IconMessage;
    function TrayMessage(const iList: Integer; const dwMessage, Flags: LongWord): Boolean;
...
procedure TfmMain.FormCreate(Sender: TObject);
...
    FIcon:= TIcon.Create;
    FiOldIcon:= 0;
    TrayMessage(FiOldIcon, NIM_Add, NIF_ICON or NIF_MESSAGE or NIF_TIP);
...
end;

procedure TfmMain.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
...
    { Icon }
    FiOldIcon:= 0;
    TrayMessage(FiOldIcon, NIM_Delete, 0);
end;

procedure TfmMain.FormDestroy(Sender: TObject);
begin
  FIcon.Free;
end;            // FormDestroy


function TfmMain.TrayMessage(const iList: Integer;
  const dwMessage, Flags: LongWord): Boolean;
var
  tnd: TNotifyIconData;
begin
  with tnd do
  begin
    cbSize:= SizeOf(TNotifyIconData);
    Wnd:= Handle;
    uID:= 1;
    uFlags:= Flags;
    uCallbackMessage:= IconMessage;
    ImageList1.GetIcon(iList, FIcon); { В ImageList1 поместить разные пиктограммки, iList - это номер }
    hIcon:= FIcon.Handle;
    szTip:= 'Всплывающее название'#0;
  end;
  Result:= Shell_NotifyIcon(dwMessage, @tnd);
end;            // TrayMessage

{ Я решаю менять пиктограмму или нет в таймере }
procedure TfmMain.TimerUpdateTimer(Sender: TObject);
var
  iNewIcon: Integer;
begin
    iNewIcon:= по какому-то правилу;
    if iNewIcon <> FiOldIcon then
    begin
      FiOldIcon:= iNewIcon;       // Запоминаем новое состояние пиктограммы
      TrayMessage(FiOldIcon, NIM_Modify, NIF_ICON);
    end;
end;            // TimerUpdateTimer

procedure TfmMain.OnWinIconMes(var AMessage: TMessage);
var P: TPoint;
begin
    case AMessage.LParam of
      WM_LButtonDown:
      begin
{        SetForegroundWindow(Handle);
        GetCursorPos(P);
        pmIcon.Popup(P.X, P.Y);}
      end;
      WM_LButtonDblClk:
      begin
        SetForegroundWindow(Handle);
        pmIcon.Items[0].Click; // Пункт меню по умолчанию
      end;
      WM_RButtonDown:
      begin
        SetForegroundWindow(Handle);
        GetCursorPos(P);
        pmIcon.Popup(P.X, P.Y);
      end;
    end;        // case AMessage.LParam
end;            // OnWinIconMes
Это вырезка. Извините, если что-то забыл указать
  #6  
Старый 27.02.2008, 13:07
neo7777 neo7777 вне форума
Прохожий
 
Регистрация: 27.02.2008
Сообщения: 12
Репутация: 10
По умолчанию

спасибо mav_c и AlexSku,
очень помогли!
Закрытая тема


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter