Autor Wątek: [podstawy] Okno Konfiguracji Wtyczki  (Przeczytany 1330 razy)

0 Użytkowników i 1 Gość przegląda ten wątek.

Offline oscypTopic starter

  • Młodzież
  • **
[podstawy] Okno Konfiguracji Wtyczki
« dnia: Październik 26, 2010, 22:15:44 pm »
Zaczynam zabawę w pisanie wtyczek, wiadomo początki najtrudniejsze dlatego pytanie nr. 1

Jak poprawnie i zgodnie z wszelką filozofią i finezją dodać wtyczkę do okienka opcji w WTW? :)

Na dobry początek skorzystałem z:

wtwOptionPageDef OpcjeWtyczki;
initStruct(OpcjeWtyczki);

zdefiniowałem odpowiednie pola struktury itd, ale... nijak nie wiem jak sprawić aby to wszystko sie w końcu wyświetliło :)

oświećcie mnie :)

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • ftyczki
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #1 dnia: Październik 26, 2010, 22:38:03 pm »
za malo kodu, za duzo pytan :P

okno jak stworzone, co ma, jak struktura wypelniona jest... moja szklana kula nie dziala cos ostatnio (a szkoda... -.-)
moje wtyczki | nie udzielam supportu poza forum...

Offline kwiateusz

[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #2 dnia: Październik 27, 2010, 08:30:38 am »
   wtwOptionPageDef settings_page;
initStruct(settings_page);

settings_page.id = PAGE_NAME;
settings_page.caption = L"kwNotify";
settings_page.parentID = WTW_OPTIONS_GROUP_PLUGINS;
settings_page.callback = reinterpret_cast<WTWFUNCTION>(settingsPage);
wtw->fnCall(WTW_OPTION_PAGE_ADD, reinterpret_cast<WTW_PARAM>(hInst), reinterpret_cast<WTW_PARAM>(&settings_page));

hinst to instancja wtyczki z DllMain

Offline crsunik

  • Narybek
  • *
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #3 dnia: Grudzień 10, 2011, 14:52:52 pm »
Nie chcąc zakładać nowego wątku, zapytam tutaj. Jak wypełnić zakładkę, który kod opisany powyżej tworzy własnymi polami oczekującymi wartości typu np. string lub enum(combobox) ?

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • ftyczki
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #4 dnia: Grudzień 10, 2011, 17:33:41 pm »
nie ma czegos takiego, tworzysz sobie sam okno, sam odpowiadasz za przechowywanie wartosci, zapis, odczyt etc. przez api przekazujesz tylko callback w ktorym tworzysz/niszczysz/pokazujesz/ukrywasz/zmieniasz rozmiar okna
moje wtyczki | nie udzielam supportu poza forum...

Offline crsunik

  • Narybek
  • *
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #5 dnia: Grudzień 11, 2011, 10:38:58 am »
A czy mógłbym prosić o jakiś przykładowy kod?

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • ftyczki
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #6 dnia: Grudzień 11, 2011, 11:13:51 am »
        { 
            wtwOptionPageDef def;
            initStruct(def);
 
            def.callback    = SettingsPage::callback;
            def.id            = L"Sounds/Options";
            def.caption        = L"Dźwięki";
            def.parentID    = WTW_OPTIONS_GROUP_PLUGINS;
            def.iconID        = SOUNDS_ICON_ID;
            wtw->fnCall(WTW_OPTION_PAGE_ADD, reinterpret_cast<WTW_PARAM>(ghInstance), reinterpret_cast<WTW_PARAM>(&def));
        }

WTW_PTR SettingsPage::callback(WTW_PARAM wParam, WTW_PARAM lParam, void*) 
{
    wtwOptionPageShowInfo* info = (wtwOptionPageShowInfo*)wParam;
 
    wcscpy(info->windowCaption, L"Sounds");
    wcscpy(info->windowDescrip, L"Ustawienia dŸwięków");
 
    SettingsPage* pOptions = (SettingsPage*)(WTW_PARAM)info->page->ownerData;
 
    switch(info->action) 
    {
    case WTW_OPTIONS_PAGE_ACTION_SHOW: 
        {
            if(!pOptions)
            {
                pOptions = new SettingsPage;
                info->page->ownerData = (void*)pOptions;
 
                pOptions->Create(info->handle);
 
                CRect rc;
                pOptions->GetClientRect(&rc);
                pOptions->SetScrollSize(rc.Width(), rc.Height());
            }
            pOptions->MoveWindow(info->x, info->y, info->cx, info->cy, TRUE);
            pOptions->ShowWindow(SW_SHOW);
            break;     
        }
    case WTW_OPTIONS_PAGE_ACTION_MOVE:
        {
            if(pOptions)
            {
                pOptions->MoveWindow(info->x, info->y, info->cx, info->cy, TRUE);
            }
            break;
        }
    case WTW_OPTIONS_PAGE_ACTION_HIDE: 
        {
            if(pOptions)
            {
                pOptions->ShowWindow(SW_HIDE);
            }
            break;
        }
    case WTW_OPTIONS_PAGE_ACTION_APPLY: 
        {
            if(pOptions)
            {
                pOptions->close(true);
            }
            break;
        }
    case WTW_OPTIONS_PAGE_ACTION_OK:
    case WTW_OPTIONS_PAGE_ACTION_CANCEL: 
        {
            if(pOptions) 
            {
                pOptions->close(info->action == WTW_OPTIONS_PAGE_ACTION_OK);
                pOptions->DestroyWindow();
                info->page->ownerData = 0;
                delete pOptions;
                pOptions = 0;
            }
            break;
        }
    }
    return 0;
}
moje wtyczki | nie udzielam supportu poza forum...

Offline crsunik

  • Narybek
  • *
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #7 dnia: Grudzień 11, 2011, 11:29:32 am »
Dziękuję.

Offline cubuspl42

  • Narybek
  • *
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #8 dnia: Styczeń 02, 2012, 16:04:28 pm »
Sorki, jeśli  uznacie, że to trochę nie na temat, ale czy przykład przytoczony przez Adriana dotyczy tworzenia okien przy pomocy MFC?

Offline mrg

  • Stylista
  • Młodzież
  • *
  • osobisty mój tekst jest tekstem osobistym ;Dxd
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #9 dnia: Styczeń 02, 2012, 18:00:38 pm »
bardzo możliwe ;p
Prośby odnośnie indywidualnych wersji moich stylów kierować na PW! Chętnie stworzę coś na zamówienie :P!!!

wtyczki do WTW będę pisał kiedyś ;d na studiach chyba (jeśli się dostanę :P), tzn myślę że wtedy będę miał na to więcej czasu. ;p

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • ftyczki
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #10 dnia: Styczeń 02, 2012, 20:57:04 pm »
nie, adrian nie uzywa MFC tylko ATL/WTL ale bardzo mozliwe jest, iz ten kod zadziala i na MFC ;p
moje wtyczki | nie udzielam supportu poza forum...

Offline Luki

  • Junior Developer
  • Narybek
  • *
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #11 dnia: Kwiecień 09, 2012, 11:18:29 am »
Mała poprawka do kodu adriana dla potomnych:
trzeba jeszcze ustawić odpowiednie style okna, więc używając WTL wygląda to mniej więcej tak:
                settingsPage = new SettingsPage;
                info->page->ownerData = (void*)settingsPage;
                settingsPage->Create(NULL);

                settingsPage->ModifyStyle(0xFFFFFFFFL, WS_CHILD);
                settingsPage->ModifyStyleEx(0xFFFFFFFFL, 0x0);
                settingsPage->SetParent(info->handle);

Offline adrian_007

  • Master Developer
  • Starszyzna
  • *
    • ftyczki
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #12 dnia: Kwiecień 10, 2012, 10:55:34 am »
moj kod zaklada, ze owe okienko siedzi sobie w zasobach (.rc) i tam jest styl WS_CHILD. jezeli piszemy z palca cale okno, to wtedy WS_CHILD mozna po ludzku przekazac w Create.
za to nie wiem po co WS_EX_MDICHILD masz podane, bo okno opcji to nie jest MDI ;p
moje wtyczki | nie udzielam supportu poza forum...

Offline Luki

  • Junior Developer
  • Narybek
  • *
[podstawy] Okno Konfiguracji Wtyczki
« Odpowiedź #13 dnia: Kwiecień 10, 2012, 11:10:32 am »
Sprawdzałem sobie jakie style ma okno twej wtyczki (Sounds konkretniej) ;)

Hm, w sumie racja, MDICHILD nie jest potrzebne, ale i tak warto sobie wyczyścić zbędne style i ustawić ten jeden, tak dla pewności ;) W przeciwnym wypadku bez zmieniania parametrów okna w zasobach okno ma obramowanie etc.

Poprawiłem post z kodem.

Tags: