Текущий архив: 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