własny tray - WinAPI

Odpowiedz Nowy wątek
2007-08-30 19:24
crayze
0

Może już ktoś kiedyś próbował stworzyć swój własny tray na oknie, ciężko coś znaleźć na ten temat na sieci, już nie mówiąc o polskich stronach(pustka na ten temat).

Chodzi mi po prostu, o pobranie i umieszczenie na swoim oknie ikon taskbara, tak jak to robi explorer, oraz obsłużenie ich

za każdy pomocny link z góry dziękuję

Pozostało 580 znaków

2007-08-30 21:20
0

tu odpowiedz (na tej samej stronie co ten watek)
http://4programmers.net/Forum/viewtopic.php?id=113603
(jest co prawda w delphi no ale z jezykami to jak z mlotkiem: gwozdz da sie wbic i murarskim i ciesielskim). Przepisanie tego to raczej dlubanina na wieczory i dlatego malo jest w sieci bo i malo przydatne.

ps. ostatnio toczyla sie dysputa na temat poziomu, kiedys taki watek polecial by do kosza ...


Pozostało 580 znaków

2007-08-31 09:28
crayze
0

Bóg zapłać Reichel,
co do Delphi, to powierzchownie język znam(choć się go nie uczyłem, jakoś samo przyszło ;) )
2 pytania:
czym się różni

[code]
type
ITrayIcon = interface (IBasic) ['{4BFE6700-C522-11D3-A530-00005A180D69}'];
ITrayIcons = interface (ICustomBasicList) ['{4BFE6701-C522-11D3-A530-00005A180D69}'];
[/code]

type to deklaracja typu struktury/klasy ITrayIcons na podstawie IBasic?, bo tego nie znam

oraz czym różni się property do function?

Pozostało 580 znaków

2007-08-31 10:20
0

property to taka udawana zmienna, tzn możemy czytać i pisać (lub tylko czytać) jak zmienną. No a funkcję (czy raczej metodę, czyli funkcję związaną z pewnym obiektem) się wywołuje (stawiasz nazwias za jej nazwą), z opcjonalnymi parametrami. Jeśli brak parametrów to mamy procedurę i wywołuje się ją bez nawiasów.

Pozostało 580 znaków

2007-08-31 11:17
crayze
0

a co z tym?

type
  ITrayIcon  = interface (IBasic)           ['{4BFE6700-C522-11D3-A530-00005A180D69}'];
  ITrayIcons = interface (ICustomBasicList) ['{4BFE6701-C522-11D3-A530-00005A180D69}'];

ITrayIcon = interface (IBasic) - ? ITrayIcon i IBasic to struktury/klasy, jak po takim zapisie ma się jedno do drugiego?

Pozostało 580 znaków

2007-08-31 11:32
0
crayze napisał(a)

a co z tym?

type
ITrayIcon  = interface (IBasic)           ['{4BFE6700-C522-11D3-A530-00005A180D69}'];
ITrayIcons = interface (ICustomBasicList) ['{4BFE6701-C522-11D3-A530-00005A180D69}'];

ITrayIcon = interface (IBasic) - ? ITrayIcon i IBasic to struktury/klasy, jak po takim zapisie ma się jedno do drugiego?
Dokładniej interface'y czyli takie specjalne klasy posiadające jedynie czyste metody wirtualne, czyli po prostu zestaw metod bez zdefiniowanego ciała. Mając obiekt z jakimś interfejsem możemy używać tych metod, bez względu na to jak je ktoś zaimplementował. Zresztą co się będę rozpisywał, poczytaj o interfejsach jak cię to interesuje. Na sieci sporo jest materiałów.

type to deklaracja typu struktury/klasy ITrayIcons na podstawie IBasic?
mniej więcej tak. W tym przypadku działa to jak typedef w C(++).

Pozostało 580 znaków

2007-08-31 20:50
crayze
0

http://help.madshi.net/TrayIcons.htm
Przeczytałem te treści...
Koleś tutaj przedstawia swoją szaloną bibliotekę :) jest tam opis funkcji tej biblioteki, które operują na trayu, ale niestety nie dopatrzyłem sie kodu tych funkcji, same prezentacje funkcji :( Nie chcę uzywać jego klas(szczególnie że są w innym języku ;) ), ale wolę sam napisać obsługe traya poprzez bezpośrednie wywołania funkcji windosowych...

To teraz z innej beczki, nie wie przypadkiem ktoś w której bibliotece lib siedzi struktura IID_IOleCommandTarget, która jest zdefiniowana w docobj.h, bo w libole32.a jej nie ma, na necie nie mogę znleźć, a sprawdziłem kilka podobny nazwowo bibliotek, dołączając je ale to jak szukanie igły w snopie siana

Pozostało 580 znaków

2007-09-01 13:36
0

co do interfejsu to yu napisane gdzie jest (a IID mozna znalezc przeszukujac pliki *.h)
http://msdn2.microsoft.com/en-us/library/ms683797.aspx

Co do ikonek w trayu to do obslugi nie ma gotowych funkcji, trzeba pisac samemu (bedzie to polegac na przechwyceniu funkcji dodajacych ikone do traya, aby poznac jaka aplikacja to robi, oraz zlapaniu uchwytu do traya i wylistowaniu ikonek - to zwykla klasa Toolbar32).

Jak wspomnialaem na dlugie wieczory ....


Pozostało 580 znaków

2007-09-01 19:37
crayze
0

z tego co do tej pory ustaliłem to klasa tollbara traya powinna nazywać się "Shell_TrayWnd", a jakieś okno potomne na nim, pewnie z ikoną dla pojedynczej aplikacji powinno nazywać się "TrayNotifyWnd", nie wiem czy to ktoś wymyslił, czy poprostu funkcja NotifyShell(ta od dodawania ikon do zasobniaka) wysyła komunikat właśnie do procedury klasy o tej nazwie, spotkałem te nazwy w dwóch niezależnych przykładach, więc przypuszczam, że tak powinno być...

w każdym bądź razie jeszcze trzeba zarejestrować okno jako okno shellowe i co do tego też nie wiem jak, w róznych przykładach jest inaczej, na jakiejś ruskiej stronie i jeszcze innej znalazłem funkcję RegisterShellHookWindow, w innym przykładzie jest to zrobione jeszcze jakoś inaczej, właśnie przy pomocy obiektów COM(dlatego pytałem sie o tą strukturę)

Jest jeszcze kwestia magicznego DWORD:
SetWindowLong (m_hMainWindow, GWL_USERDATA, magicDWord);
jakaś wartość w którą trzeba wyposażyć okno, właście to też do końca nie wiem po co

Jest jeszcze rejestracja komunikatu "SHELLHOOK"
WM_SHEELHOCK=RegisterWindowMessage("SHEELHOOK");
być może to ten którym transportowane są wiadomości do traya, jeszcze kwestia obsłużenia go, co oznaczają parametry, jak taki komunikat obsłużyć?

trochę zbyt dużo niewiadomych, aby zrobić ten tray, ale coż, reszta powłoki pójdzie jak z płatka, może za pare miesięcy dojdę z tym trayem ;)

Pozostało 580 znaków

2007-09-01 19:40
0

IID_IOleCommandTarget i większość IID jest w uuid.lib lub libuuid.a.

Pozostało 580 znaków

2007-09-01 20:33
0
crayze napisał(a)

ciężko coś znaleźć na ten temat na sieci, już nie mówiąc o polskich stronach(pustka na ten temat).

http://darkcult.gamedev.pl/kursy/apitray.html

Moze to ci pomoze. Daj znac czy o to chodzilo ;)


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0