Форум: "Начинающим";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
Внизиконка в трее без форм Найти похожие ветки
← →
AHTOLLlKA (2008-11-10 15:10) [40]
> А вот в [35] есть.Дело за малым - самомтоятельно дотумкать,
> куда этот фрагмент приспособить.Задачка для школьника)
дак я же добавил это в
function WndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam:
LPARAM): LRESULT; stdcall
← →
Сергей М. © (2008-11-10 15:18) [41]
> AHTOLLlKA (10.11.08 15:10) [40]
Вот как ты отформатировал, так и видно что "добавил".
Рууи бы поотрывать за такое форматирование текста программы !
Ну так что, диал.окно "test" открывается при елозаньи мышью в области иконки ?
← →
AHTOLLlKA (2008-11-10 15:21) [42]в том то и дело что нет (((
и так же изчезает ((
← →
Сергей М. © (2008-11-10 15:30) [43]потому что у тебя h_Wnd = 0
← →
Sapersky (2008-11-10 16:33) [44]http://sapersky.narod.ru/files/TrayIcon.rar
Не знаю, поможет или наоборот усугубит... :)
← →
AHTOLLlKA (2008-11-11 07:50) [45]Спасибо тебе большое Sapersky!!!
это то что нужно... сейчас буду сидеть разбираться!
всем кто помогал спасибо что уделили время
← →
Юрий Зотов © (2008-11-15 13:01) [46]До кучи. Писал когда-то этот пример, лет 100 назад. Может, снова кому-то пригодится.
program TrayWithoutVCL;
{$M 1024, 1024}
uses
Windows,
Messages,
ShellAPI;
const
AppName = "WinApiTrayApp";
WM_TRAYMSG = WM_USER + 100;
var
WndClass: TWndClassEx;
WndHandle: HWND = 0;
Msg: TMsg;
IconData: TNotifyIconData;
IconMenu: HMENU = 0;
SecondIcon: HICON;
function WndFunc(Wnd, Msg: DWORD; wParam, lParam: integer): integer; stdcall;
var
P: TPoint;
begin
case Msg of
WM_DESTROY, WM_QUERYENDSESSION:
begin
Result := Integer(Msg = WM_QUERYENDSESSION);
PostQuitMessage(0)
end;
WM_TRAYMSG:
begin
Result := 0;
if (lParam = WM_RBUTTONDOWN) and GetCursorPos(P) then
begin
SetForegroundWindow(Wnd);
TrackPopupMenuEx(IconMenu, 0, P.X, P.Y, Wnd, nil);
PostMessage(Wnd, WM_NULL, 0, 0)
end
end;
WM_COMMAND:
begin
Result := 0;
case wParam and $FFFF of
0: begin
if IconData.hIcon = SecondIcon then
IconData.hIcon := WndClass.hIcon
else
IconData.hIcon := SecondIcon;
Shell_NotifyIcon(NIM_MODIFY, @IconData)
end;
1: PostMessage(Wnd, WM_CLOSE, 0, 0)
end
end;
else
Result := DefWindowProc(Wnd, Msg, wParam, lParam)
end
end;
{ -------------------------------------------------------------------------------------------- }
begin { main }
with WndClass do
begin
cbSize := SizeOf(WndClass);
Style := CS_HREDRAW or CS_VREDRAW ;
lpfnWndProc := @WndFunc;
hIcon := LoadIcon(0, IDI_EXCLAMATION);
hCursor := LoadCursor(0, IDC_ARROW);
hbrBackground := hBrush(COLOR_WINDOW);
lpszMenuName := nil;
lpszClassName := AppName;
hIconSm := hIcon
end;
WndClass.hInstance := hInstance;
if RegisterClassEx(WndClass) = 0 then
Exit;
WndHandle := CreateWindowEx(WS_EX_TOOLWINDOW, AppName, AppName, WS_OVERLAPPEDWINDOW, 0, 0, 0, 0, 0, 0, hInstance, nil);
if WndHandle = 0 then
Exit;
with IconData do
begin
cbSize := SizeOf(IconData);
Wnd:= WndHandle;
uID := 100;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := WM_TRAYMSG;
hIcon:= WndClass.hIcon;
szTip := AppName
end;
if Shell_NotifyIcon(NIM_ADD, @IconData) then
try
IconMenu := CreatePopupMenu;
if IconMenu <> 0 then
try
if AppendMenu(IconMenu, MF_STRING, 0, "Сменить иконку") and
AppendMenu(IconMenu, MF_STRING, 1, "Выход") then
begin
SecondIcon := LoadIcon(0, IDI_QUESTION);
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg)
end
end
finally
DestroyMenu(IconMenu)
end;
finally
Shell_NotifyIcon(NIM_DELETE, @IconData)
end
end.
← →
AHTOLLlKA (2008-11-19 15:11) [47]спасибо и вам Юрий!
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.007 c