KoSiarzPL
23.02.2006 - 13:08
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
23.02.2006 - 23:50
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
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
24.02.2006 - 20:33
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.
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.