Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Api (трей+меню)   Найти похожие ветки 

 
Steep ©   (2006-09-18 07:56) [0]

Скажите как можно на чистом api, не используя VCL.
Засунуть иконку в трей и на правую клавишу вызывать меню?
Если можно (может где статья есть) с примерчиком..
PS. Читал в Win32SDK (стандартной в Delphi), но че-то не совсем допираю что именно нужно вызывать и с какими параметрами


 
vodvorezlaya   (2006-09-18 08:20) [1]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ShellApi, AppEvnts;

const
 WM_ICONTRAY = WM_USER + 1;

 
type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
 TrayIconData: TNotifyIconData;
   { Private declarations }
 public
 procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY;

   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
with TrayIconData do
 begin
   cbSize := SizeOf(TrayIconData);
   Wnd := Handle;
   uID := 0;
   uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
   uCallbackMessage := WM_ICONTRAY;
   hIcon := Application.Icon.Handle;
   StrPCopy(szTip, Application.Title);
end;

 Shell_NotifyIcon(NIM_ADD, @TrayIconData);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
end;

procedure TForm1.TrayMessage(var Msg: TMessage);
begin
 case Msg.lParam of
   WM_LBUTTONDOWN:
   begin
     ShowMessage("Left button clicked - let""s SHOW the Form!");
     Form1.Show;
   end;
   WM_RBUTTONDOWN:
   begin
     ShowMessage("Right button clicked - let""s HIDE the Form!");
     Form1.Hide;
   end;
 end;
end;

end.


 
Steep ©   (2006-09-18 08:25) [2]


> не используя VCL


А тут!
> uses
>  Windows, Messages, SysUtils, Variants, Classes, Graphics,
>  Controls, Forms,
>  Dialogs, ShellApi, AppEvnts;


> var
>  Form1: TForm1;

Ну и тд...
PS. Как засунуть иконку в трей я читал (и делал), но прога весит 300кб!, хотя делает одну простенькую операцию (запуск файла)
Хотел вот попробовать на чистом api.. чтобы весила 13-20 кб не больше..


 
Думкин ©   (2006-09-18 08:35) [3]

> Steep ©   (18.09.06 07:56)  

Для начала надо научиться создавать программы на Дельфи без VCL, а на чистом АПИ.

Вопросы задавай правильно.


 
Steep ©   (2006-09-18 08:44) [4]

Так я так и написал...

> чистом api, не используя VCL.

А вобще спасибо за участие!


 
vodvorezlaya   (2006-09-18 08:51) [5]


> Хотел вот попробовать на чистом api.. чтобы весила 13-20
> кб не больше..

Ну так бери и создавай своё Console Application;

Правда этой проге в структуру IconTray надо присвоить её Handle которого у Console Application нет!
Да и значёк нужен с ресурсов.


 
Думкин ©   (2006-09-18 08:58) [6]

> Steep ©   (18.09.06 08:44) [4]

Интерпретировать можно по разному - без ВКЛ засунуть, или вся программа без ВКЛ.
Если вся программа, то прежде чем засовывать - надо просто научится писать такие программы. А потом уже и засовывать получится.
Можно почитать Петцольда для 95-й. Идеология описана. Соорудить такое же на Дельфи - в легкую. Взять книгу можно на сайте АП.

Там же есть книги Краснова по ЖЛ для Дельфи. В ней есть примеры, как делать программы без VCL.


 
Steep ©   (2006-09-18 09:20) [7]


> Взять книгу можно на сайте АП.

это где?
Если печатные, то сейчас наврятле денег пока нет..
Электронные (бесплатные :) всегда пожалуйста, только плиз ссылочку дайте..


> создавай своё Console Application;

А я создан не консоль, просто удалил формы, а uses оставил только windows. Там и иконка есть.. и хендл (наверное)...
так можно?


 
Steep ©   (2006-09-18 10:06) [8]

Кажись я нашел!
http://delphiworld.narod.ru/base/icon_on_tray.html

Осталось только уточнить как сделать меню с помощью этих команд LoadMenu(), GetSubMenu(), CreateMenu() (может подскажете?)
ну и нормально разобраться с Shell_NotifyIcon()


 
Думкин ©   (2006-09-18 11:15) [9]

> Steep ©   (18.09.06 09:20) [7]

http://podgoretsky.com/
Только Анатолий многие книжные проекты прикрыл. И доступен ли на данный момент Петзольд - не знаю.



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
1-1156160268
alexaken
2006-08-21 15:37
2006.10.08
Компонент меню как в Office 2003 для BDS 2006 VCL


15-1158248312
AntiUser
2006-09-14 19:38
2006.10.08
Борцы с пиратами убили eDonkey, сеть завершила свою работу


15-1157549352
Новый_Юзер
2006-09-06 17:29
2006.10.08
как заменить картинку при загрузке WindowsXP?


8-1142597048
Lordalexander
2006-03-17 15:04
2006.10.08
Уменьшеть картинку


15-1158160453
Vlad Oshin
2006-09-13 19:14
2006.10.08
пистолет мини-рассказ