Главная страница
    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.47 MB
Время: 0.045 c
1-1156160268
alexaken
2006-08-21 15:37
2006.10.08
Компонент меню как в Office 2003 для BDS 2006 VCL


15-1158627488
Mutnauq
2006-09-19 04:58
2006.10.08
D10Lite


2-1159105448
Серый
2006-09-24 17:44
2006.10.08
Метка


15-1158072079
zdm
2006-09-12 18:41
2006.10.08
Borland Developer Studio 2006


3-1155213781
Ega23
2006-08-10 16:43
2006.10.08
конструкция Update ... Set ID=(Select)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский