KoSiarzPL
  2.01.2006 - 21:33
  
 
  1. Jak pobrać właściciela (wtyczkę) akcji.
2. Jak pobrać ikonkę wtyczki/akcji.
3. Co mi zwracają  UIGroupHandle i UIActionHandle. Czym są te uchwyty bo nie rozumiem i co mogę z nimi zrobić.
4. Czy istnieje sposób zmiany pozycji akcji bez jej niszczenia i ponownego utworzenia?
 
 
 
 
  CODE
ICMessage(IMI_ACTION_GETOWNER , (int)&nfo.act);
2. UIActionGet, z maską UIAIM_P1, w p1 będziesz miał ikonę akcji
3. UIGroupHandle(sUIAction(0,IMIG_MSGWND,cnt)) zwróci HWND okna rozmowy, sądze że UIActionHandle będzie zwracało HWND poszczególnych kontrolek w konfigu
4. Raczej nie...
 
 
 
 
  KoSiarzPL
  2.01.2006 - 22:23
  
 
  QUOTE(Olórin @ 2.01.2006 - 22:55)
Czy w takim razie da się zmienić właściciela (wtyczkę) akcji? Pewnie też nie bo w sdk żadnego SETOWNER nie ma :/
 
 
 
 
  KoSiarzPL
  3.01.2006 - 00:23
  
 
  6. Jak przechwycic komunikaty akcji (ACTN_) innych wtyczek.
 
 
 
 
  Subclassowanie akcji 

 W SDK jest przykład
 
 
 
  KoSiarzPL
  3.01.2006 - 12:39
  
 
  O matko! Będe musiał subklasować wszystkie akcje konnekta?
 
 
 
  KoSiarzPL
  3.01.2006 - 13:48
  
 
  W związku z pytaniem pierwszym. Mając ID wtyczki mogę coś z nim zrobić? Pobrać nazwę wtyczki, wartość NET itp? Jeśli nie to jak pobrać nazwę konkretnej wtyczki?
 
 
 
 
  Nie, imho subclassowanie wszystkich akcji w K to beznadziejny pomysł... Powinieneś poszukać jakiegoś innego rozwiązania... Co chcesz zrobić?
Mając ID wtyczki możesz wysłać do niego komunikat (IMessageDirect), a jak wiadomo, każda wtyczka musi obsługiwać komunikaty IM_PLUG_*
 
 
 
  KoSiarzPL
  4.01.2006 - 15:56
  
 
  A jak pobrać ikonki wtyczki (16x16 oraz 32x32)?
 
 
 
 
  Pobrać? Możesz użyć ich identyfikatora, jeżeli chcesz wyświetlić w innym miejscu. Identyfikator ikonki jest zazwyczaj w parametrze p1 akcji.
 
 
 
 
  Innymi słowy nie istnieje coś takiego jak ikona wtyczki 
 
  
 
  KoSiarzPL
  18.01.2006 - 02:36
  
 
  W jaki sposób mogę wychwycic moment gdy wszystkie wtyczki juz wystartowały?  Cce miec pewnosc ze wszystkie utworzyly juz swoje akcje.
Jedyny sposob na ten moment to ustawienie mojej wtyczki na samym koncu ladowanych wtyczek i wykonac to co chce w momencie przechwycenia komunikatuu IM_PLUGIN_START.
 
 
 
  Olórin
  18.01.2006 - 08:03
  
 
  IM_ALLPLUGSINITIALIZED czy coś pod ten deseń...
 
 
 
  KoSiarzPL
  18.01.2006 - 09:22
  
 
  Tylko to "chyba" wysyła powiadomienie gdy do wszystkich wtyczek roześle IM_PLUGINS_INIT. Tak mi się wydaje bo tego już próbowałem i wtedy żadnych akcji nie było utworzonych. Wszystkie wtyczki natomiast tworzą swoje akcjie trochę poźniej.
 
 
 
  Olórin
  18.01.2006 - 09:26
  
 
  IStart jest juży wywoływane po IPrepare (chyba 

), ale jak do tego dodać najniższy priorytet wtyczki, wtedy wszystko na pewno wyłapiesz 
 
  
 
 
  Wtyczki inicjalizują akcje w IM_PREPARE - więc w IM_START wszystkie powinny być już zarejestrowane...
 
 
 
  KoSiarzPL
  20.01.2006 - 22:26
  
 
  Jak dynamicznie wyświetlać w kontrolce IMAGE ikonkę akcji? Próbowałem już na wiele sposobów i nic. 
Tak jak Olórin pisał korzystam z p1 struktury suiacioninfo. Tylko pewnie trzeba jakoś to sformatować.
Na koniec robię UIActionSetText() dla kontrolki.
 
 
 
 
  Mi się wydaje, że chyba ten tekst musi być w formacie reg://lista/id.typ  lista = IML16|IML32(wyciągnięte z sdk, nie weryfikowałem). Jako typ wpisz ico chyba 
 
  
 
  KoSiarzPL
  21.01.2006 - 14:23
  
 
  Ech zapomnialem o dodaniu rozszerzenia "ico". Dzieki.
 
 
 
  KoSiarzPL
  21.01.2006 - 15:17
  
 
  To jeszcze jedna sprawa z kontrolką IMAGE. Da się jej przypisać tip? Próbowałem tak:
CODE
string txt = "reg://IML16/" + wartosc_id + ".ico" CFGTIP "tiiiip";
CODE
string txt = "reg://IML16/" + wartosc_id + ".ico";
txt += "\x1A";
txt += "tip=tiiip";
CODE
string txt = "reg://IML16/" + wartosc_id + ".ico";
txt = SetActParam(txt, AP_TIPRICH, "tiiiip");
txt = SetActParam(txt, AP_TIPRICH_WIDTH, "300");
CODE
string txt = "reg://IML16/" + wartosc_id + ".ico";
txt = SetActParam(txt, AP_TIP, "tiiiip");
txt = SetActParam(txt, AP_TIP_WIDTH, "300");
UIActionSetText( cfg_main2, IMIB_CFG|cfg_wtyczka_ico, txt.c_str() );
Ikonka jest ale tipa nadal nie ma.
 
 
 
 
  O ile pamiętam obrazkom tipów przydzielać nie można...
Co do samego ustawiania - dwie ostatnie metody są najlepsze. 
Ew. txt = "link" AP_TIP "blebleble";
Możesz zawsze koło obrazka wstawić przycisk helpa.
 
 
 
  KoSiarzPL
  1.02.2006 - 17:45
  
 
  Juz jakoś sobie z tym poradizłam. Troszke szkoda że obrazek nie może mić tipa ale coż. Problem tylko w tym że nie można tego tipa dynamicznie zmieniać jak również ukrywać akcji.
 
 
 
  KoSiarzPL
  11.04.2006 - 19:04
  
 
  Nowy problem 

Jak sprawdzić czy dany przycisk na toolbarze okna rozmowy jest wciśnięty?
Jeśli zrobię tak:
CODE
int status = UIActionGetStatus( msg->act );
lub
CODE
sUIActionInfo nfo( msg->act );
nfo.mask = UIAIM_ALL;
nfo.txt = new char [100];
nfo.txtSize = 99;
UIActionGet( nfo );
status = nfo.status;
to zawsze status == 0 :/
Oczywiście te kawałki kodu są wywoływane w bloku 
CODE
if( msg->code == ACTN_ACTION )
 [edit]
Dodam tylko, że jeśli zrobię:
CODE
UIActionSetStatus( msg->act, -1, ACTS_CHECKED );
 To przycisk się zaznaczy. Czyż to nie dziwne?
 
 
 
  Olórin
  11.04.2006 - 20:09
  
 
  Wszystko się zgadza odnośnie dopisku -1 (0xffffffff) ustawia wszystkie flagi zawarte w masce....
 
 
 
  bulanh
  11.04.2006 - 20:35
  
 
  Nie wiem czy to będzie działać na przyciski, ale z checkbox'ami się świetnie spisuje:
CODE
int GetCheckBox(int contr)
    {
    char ret[2];
    UIActionCfgGetValue(sUIAction(GRUPA, contr), ret, 2);
//    ret[1]='\0';
    return (ret[0]=='1');
    };
  
 
  KoSiarzPL
  11.04.2006 - 22:00
  
 
  QUOTE(Olórin @ 11.04.2006 - 19:13) 

Wszystko się zgadza odnośnie dopisku -1 (0xffffffff) ustawia wszystkie flagi zawarte w masce....
Tak wiem. Mówiąc dziwne miałem na myśli że ustawianie wartosci status dziala ale pobieranie zawsze zwraca zero :/
QUOTE(bulanh @ 11.04.2006 - 19:39) 

Nie wiem czy to będzie działać na przyciski, ale z checkbox'ami się świetnie spisuje:
CODE
int GetCheckBox(int contr)
    {
    char ret[2];
    UIActionCfgGetValue(sUIAction(GRUPA, contr), ret, 2);
//    ret[1]='\0';
    return (ret[0]=='1');
    };
Jest szybszy sposób
CODE
 return *UIActionCfgGetValue(sUIAction(GRUPA, contr), 0, 0) == '1';

 Niestety ta funkcja jest przeznaczona do sprawdzania kontrolek w konfiguracji tu chyba na nic sie przyda. A jak K sprawdza czy na toolbarze jest wciśnięty przycisk "enter"? Hao napewno musi to wiedzieć 

 Chyba nie trzyma w jakiejś zmiennej "przyciskOn" dla kazdego okna.
 
 
 
 
 
  Ciężko mi tak na szybko odpowiedzieć, ale w oknach rozmowy jest generalny problem z poleganiem na odczytywanych z kontrolek wartościach. Jedynym dobrym sposobem, jest uzależnić wartość checked/nie-checked od ustawienia w konfiguarcji (i jes odczytywać przy tworzeniu kontrolki i potem zmieniać przy jej naciskaniu). Tak zrobiony jest właśnie ten enter... sad but true
 
 
   
  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.