Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znaczenie zwracanych wartości w IMessageProc()
Konnekt | Forum > Developerzy > Tworzenie wtyczek
KoSiarzPL
Już chyba się o to kiedyś pytałem lecz nie dostałem zadowalającej odpowiedzi (a forum o tej godzinie tak działa, że bym pół dnia szukał jednego tematu).
Więc jakie znaczenia mają wartości zwracane w IMessageProc(). Obsługa komunikatów: IM_PLUG_INIT, IM_PLUG_DEINIT, IM_SETCOLS, IM_UI_PREPARE, IM_START, IM_END zwracają jedynke. Natomiast komunikat IM_UIACTION zwraca zero. Zastanawia mnie jaka to różnica? Jeśli zwrócę w IM_UIACTION jedynkę to nie będe mógł otwierać np okna rozmowy dwuklikiem na kontakcie.

Moze to działą tak iż jeśli jakiejś akcji nie obsługuję to musze zwrócić zero i wtedy rdzeń sam postara się je obsłużyć a jeśli chcemy zablokować obsługę tego komunikatu to zwracamy jedynkę. Tak?

No i jeszcze jedno pytanie. Czy IM_UIACTION będzie potrzebowało kiedykolwiek zwracać co innego niż zero?
Olórin
QUOTE
Jeśli zwrócę w IM_UIACTION jedynkę to nie będe mógł otwierać np okna rozmowy dwuklikiem na kontakcie.

W niektórych komunikatach przesyłanych do IM_UIACTION zwracana wartość jest istotna. Np. w an->code == ACTN_DEFAULT
hao
Wartość zwrotu zależy od komunikatu. Te które wymieniłeś zwracają jedynkę jako oznaczenie bezbłędnego wykonania (zwrócenie 0 z IM_PLUG_INIT nie ładuje dalej wtyczki). Zwrot z IM_UIACTION zależy od komunikatu (jak napisał Olórin)...

To czy wtyczki obsłużyła komunikat, czy nie rozponawane jest przez Ctrl->getError() == IMERROR_NORESULT (wtyczka ustawia ten błąd, gdy nie wie jak obsłużyć komunikat).
KoSiarzPL
No tak, z IMERROR_NORESULT to wiem. Mówiąc o nie obsłużeniu akcji miałem na myśli dokłądine akcję nie komunikat.
Komunikat IM_UIACTION ja obsługuję ale nie koniecznie muszę obsłużyć akcję która została wywołana w związku z tym komunikatem. Bo jak inaczej interpretować to, iż jeśli jako wartością domyślną zwracaną w tym komunikacie będzie jeden to nie będę mógł otworzyć okna rozmowy dwuklikiem na kontakcie. Jeśli będzie to tak jak zawsze zero to wszystko będzie w porządku.
hao
W IM_UIACTION działa to tak samo - jak nie obsługujesz komunikatu również ustawiasz domyślnie ten błąd. Domyślnie z IM_UIACTION zwracasz 0. W akcjach, w których zwrot jest istotny zwracasz to co trzeba...

Zwrócenie przy ACTN_DEFAULT 1 oznacza że twoja akcja powinna być domyślna.

IM_UIACTION jest "przedłużeniem" systemu komunikatów i tak też należy go traktować.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.