logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Visual C++] Komunikacja pomiędzy oknami dialogowymi.

gregg21 12 Lis 2004 16:32 2459 8
REKLAMA
  • #1 980369
    gregg21
    Poziom 11  
    Posty: 63
    Pomógł: 1
    Ocena: 1
    Mam taki mały problem dla większosci pewnie to proste ale niewiem jak przekazywac dane z jednego okna do drugiego(VC++) Stworzyłem kilka modalnych okienek w jednym z nich pobieram dane i chce żeby można było je potem wyświetlić w oknie głównym. Są do tego jakieś funkcje? Czy przez zmienne globalne??
    Z góry dzięki za wszelkie sugestie...:)

    Zamykam. - arnoldziq
  • REKLAMA
  • #2 980404
    kk.2000
    Poziom 26  
    Posty: 641
    Pomógł: 91
    Ocena: 90
    Jeśli masz okno główne to może ono korzystać z danych zapisanych w innych kontrolkach innych form.
    Składnia?
    w kodzie formy głównej piszesz wtedy takie odwołanie:
    FORMA_ZEWNĘTRZNA.NAZWA_KONTROLKI.WŁAŚCIWOŚĆ_KONTROLKI
    czyli odwołujesz się tak samo jak do kontrolki na formie, ale jeśli to jest INNA forma, to przed nazwą kontrolki wpisujesz nazwę formy.
  • #3 980493
    krzychoo_soft
    Poziom 17  
    Posty: 233
    Pomógł: 16
    Ocena: 13
    w pliku nagłówkowym formy głównej, do klasy TForm1 dopisz sobie zmienne publiczne.

    ...
    public: // User declarations
    int Zmienna;

    i do edycji z modalnego okienka używaj:
    Form1->Zmienna=StrToInt(Edit1->Text);

    jeśli dobrze Cię zrozumiałem to chyba o to chodziło.

    na marginesie mówiąc, temat był już poruszany jakiś czas temu... był przykładowy kod.

    pozdrawiam,
  • REKLAMA
  • #4 980578
    gregg21
    Poziom 11  
    Posty: 63
    Pomógł: 1
    Ocena: 1
    hmm
    napisze jeszcze raz...
    w jednej funkcji tworze sobie dialog boxa DoModal(IDC_okienko) i mam w nim np editboxa, któremu przypisałem zmienna m_zmienna, w oknie głównym też mam editboxa ze zmienna m_zmienna2 no i teraz tak łopatologicznie...:
    jak przy aktywnym oknie modalnym zapisac cos do głównego?
    ............ zmienna2=zmienna;

    co tam powinno być?? :)
    mam w oknie modalnym zdobyć jakoś wskaźnik do okna macierzystego?
  • #5 980689
    one_eddie
    Poziom 25  
    Posty: 973
    Pomógł: 62
    Ocena: 14
    Komunikacja w windows odbywa sie za pomoca SendMessage itp?

    Czyli np

    // Dialog 1 winproc
    WinProc()
    {
     // ...
      switch (...)
       {
         case WM_INITDIALOG: SendMessage(hWndDialog2, WM_DIALOG2_MSG, NULL, NULL);
       }
    }
    
    Winproc // Dialog 2
    {
      // ...
      case WM_DIALOG2_MSG: { /*...*/} break;
    }


    Jesli uzywasz mfc to sprawa jest jeszcze prostsza.

    Ale mam takie 1 zastrzezenie: kazdy program moze obsluzyc tylko 1 okno modalne na raz, miejmy nadzieje ze o tym pamietasz :)
  • #6 980769
    gregg21
    Poziom 11  
    Posty: 63
    Pomógł: 1
    Ocena: 1
    mam jeszcze taki mały problem:
    w stworzonym okienku nie dziłają żadne przyciski...tzn są aktywne, można na nich klikać ale nie wywoływuje się przypisana do nich funkcja...
    jedyne które działają to standartowe OnOK i OnCancel
    pewnie to jakaś drobnostka, ale pomóżcie!!! :)
    z góry dzięki
    pozdrawiam
  • REKLAMA
  • #8 980909
    kk.2000
    Poziom 26  
    Posty: 641
    Pomógł: 91
    Ocena: 90
    Jasne, można pomóc, ale kodu kawałek prześlij... w jaki sposób mają działać te kontrolki...

    A czy jak klikniesz te kontrolki 2 razy (w trybie edycji, nie uruchomienia)myszą to odwołanie do ich kodu działa prawidłowo?
  • REKLAMA
  • #9 980980
    gregg21
    Poziom 11  
    Posty: 63
    Pomógł: 1
    Ocena: 1
    stad mozna pobrac plik:
    http://www.astercity.net/~28im42ga/test.rar

    główne okno się otwiera, po kliknieciu na buton okno otwiera się kolejne, a w nim po kliknieciu na "nowy" juz nic sie nie dzieje... dlaczego???

Podsumowanie tematu

✨ Dyskusja dotyczy problemu komunikacji między modalnymi oknami dialogowymi w Visual C++. Autor pyta, jak przekazywać dane z jednego okna do drugiego, zwłaszcza jak przesłać dane z okna modalnego do okna głównego. Proponowane rozwiązania obejmują użycie publicznych zmiennych w klasie okna głównego, do których można przypisywać wartości z okna modalnego, np. poprzez dostęp do zmiennych kontrolki (EditBox) w obu oknach. Wskazano także możliwość korzystania z funkcji Windows API, takich jak SendMessage, do przesyłania komunikatów między oknami. Podkreślono, że w programie można obsługiwać tylko jedno okno modalne na raz. Pojawił się problem z nieaktywnością przycisków w oknie dialogowym, gdzie działały tylko standardowe funkcje OnOK i OnCancel, co może wynikać z błędów w obsłudze zdarzeń. Użytkownik udostępnił przykładowy kod i prosił o pomoc w diagnozie problemu. Wskazano również, że poprawne powiązanie kontrolek z funkcjami obsługi zdarzeń jest kluczowe dla działania przycisków.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA