eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Visual Studio C++ Express -> dostęp do formy głównej
Ilość wypowiedzi w tym wątku: 4

  • 1. Data: 2009-11-19 13:23:51
    Temat: Visual Studio C++ Express -> dostęp do formy głównej
    Od: "Jan Kowalski" <c...@g...pl>

    W jaki sposób uzyskać dostęp do formy głównej (i jej kontrolek) programu
    napisanego pod Visual C++ Express?.
    Oprawiam w okienkową skórę program napisany pierwotnie pod konsole. Włączyłem
    plik z kodem źródłowy do projektu. Program kompiluje się poprawnie. Teraz
    chciałbym aby parametry wprowadzane do kontrolek na formie głównej mogły
    zostać wykorzystane przez pierwotny kod programu. Chodzi np. o nazwę pliku.
    Oczywiście mogę skonwertować nazwę do char i podać do funkcji jako parametr,
    mogę utworzyć zmienną globalną widzianą w całym programie i użyć ją do
    przekazania nazwy, ale dlaczego nie ma sposobu (a przynajmniej ja nie wiem jak
    to zrobić) aby uzyskać dostęp do formy głównej programu i jej kontrolek tak
    aby odwoływać się w taki oto sposób Form1->textBox1->Text? Albo inny problem.
    Funkcja przetwarza plik i potrzebuje sygnalizować to za pomocą progress bar.
    Nie mając dostępu do formy głównej nie mam dostępu do progress bar.
    Teoretycznie można to obejść pakując cały kod do wnętrza klasy, ale nie
    zmienia to faktu, że nie wiem w jaki sposób dostać uchwyt do formy głównej. Z
    tego co mi wiadomo (jestem początkujący) inne RADy np. C++ Builder Borlanda
    dają taką możliwość więc sądzę, że Visual powinien mieć podobną możliwość.



    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 2. Data: 2009-11-19 13:35:47
    Temat: Re: Visual Studio C++ Express -> dostęp do formy głównej
    Od: Paweł Kierski <n...@p...net>

    Jan Kowalski wrote:
    > W jaki sposób uzyskać dostęp do formy głównej (i jej kontrolek) programu
    > napisanego pod Visual C++ Express?.

    Domyślam się, że projekt jest w C++/CLI - potwierdź, bo to bardzo
    istotna rzecz.

    > Oprawiam w okienkową skórę program napisany pierwotnie pod konsole. Włączyłem
    > plik z kodem źródłowy do projektu. Program kompiluje się poprawnie. Teraz
    > chciałbym aby parametry wprowadzane do kontrolek na formie głównej mogły
    > zostać wykorzystane przez pierwotny kod programu. Chodzi np. o nazwę pliku.
    > Oczywiście mogę skonwertować nazwę do char i podać do funkcji jako parametr,

    I to jest bardzo dobry pomysł.

    > mogę utworzyć zmienną globalną widzianą w całym programie i użyć ją do
    > przekazania nazwy,

    A to jest bardzo zły pomysł.

    > ale dlaczego nie ma sposobu (a przynajmniej ja nie wiem jak
    > to zrobić) aby uzyskać dostęp do formy głównej programu i jej kontrolek tak
    > aby odwoływać się w taki oto sposób Form1->textBox1->Text?

    Bo w ogólności nie ma takiej potrzeby.

    > Albo inny problem.
    > Funkcja przetwarza plik i potrzebuje sygnalizować to za pomocą progress bar.
    > Nie mając dostępu do formy głównej nie mam dostępu do progress bar.

    I nie musisz mieć. Wystarczy, że funkcja sygnalizuje postęp wywołaniem
    zwrotnym (callbackiem). Wtedy przekazujesz funkcji informację, że ma
    wywołać funkcję (np. statyczną metodę klasy okna głównego), która wie
    już jak informację o postępie zwizualizować. W .NET do tego służą eventy
    i delegaty.

    > Teoretycznie można to obejść pakując cały kod do wnętrza klasy,

    Znów bardzo zły pomysł.

    > ale nie
    > zmienia to faktu, że nie wiem w jaki sposób dostać uchwyt do formy głównej. Z
    > tego co mi wiadomo (jestem początkujący) inne RADy np. C++ Builder Borlanda
    > dają taką możliwość więc sądzę, że Visual powinien mieć podobną możliwość.

    Niestety Borland ma taką możliwość i wszystkie złe pomysły, które
    tutaj podałeś pośrednio wynikają z tej możliwości i początkowej łatwości
    uzyskiwania rezultatów za ich pomocą.

    --
    Paweł Kierski
    n...@p...net


  • 3. Data: 2009-11-19 14:06:40
    Temat: Re: Visual Studio C++ Express -> dostęp do formy głównej
    Od: "Jan Kowalski" <c...@g...SKASUJ-TO.pl>

    Paweł Kierski <n...@p...net> napisał(a):

    > Jan Kowalski wrote:
    > > W jaki sposĂłb uzyskaÄ&#65533; dostÄ&#65533;p do formy gĹ&#65533;Ăłwnej (i jej
    kontrolek) programu
    > > napisanego pod Visual C++ Express?.
    >
    > DomyĹ&#65533;lam siÄ&#65533;, Ĺźe projekt jest w C++/CLI - potwierdĹş, bo to
    bardzo
    > istotna rzecz.

    CLR->WindowsFormsApplication
    To nie jest program dla command line. Wyjsciowy program był dla command line,
    zamieniłem main na inną nazwę a forma ma za zadanie pobrać parametry i wywołać
    dawną funkcję main.

    > > Oprawiam w okienkowÄ&#65533; skĂłrÄ&#65533; program napisany pierwotnie pod
    konsole. WĹ&#65533;Ä&#65533;c
    > zyĹ&#65533;em
    > > plik z kodem ĹşrĂłdĹ&#65533;owy do projektu. Program kompiluje siÄ&#65533;
    poprawnie. Teraz
    > > chciaĹ&#65533;bym aby parametry wprowadzane do kontrolek na formie
    gĹ&#65533;Ăłwnej mogĹ&#65533;y
    > > zostaÄ&#65533; wykorzystane przez pierwotny kod programu. Chodzi np. o
    nazwÄ&#65533; pliku.
    > > OczywiĹ&#65533;cie mogÄ&#65533; skonwertowaÄ&#65533; nazwÄ&#65533; do char i
    podaÄ&#65533; do funkcji jako param
    > etr,
    >
    > I to jest bardzo dobry pomysĹ&#65533;.

    OK, ale co zrobić gdy parametrów jest bardzo dużo. Oprawić w strukturę i
    posłać ją do funkcji? Zapis wygląda apetycznie, skutków ubocznych nie rodzi...

    > > ale dlaczego nie ma sposobu (a przynajmniej ja nie wiem jak
    > > to zrobiÄ&#65533;) aby uzyskaÄ&#65533; dostÄ&#65533;p do formy gĹ&#65533;Ăłwnej
    programu i jej kontrolek
    > tak
    > > aby odwoĹ&#65533;ywaÄ&#65533; siÄ&#65533; w taki oto sposĂłb
    Form1->textBox1->Text?
    >
    > Bo w ogĂłlnoĹ&#65533;ci nie ma takiej potrzeby.
    >
    > > Albo inny problem.
    > > Funkcja przetwarza plik i potrzebuje sygnalizowaÄ&#65533; to za pomocÄ&#65533;
    progress bar
    > .
    > > Nie majÄ&#65533;c dostÄ&#65533;pu do formy gĹ&#65533;Ăłwnej nie mam
    dostÄ&#65533;pu do progress bar.
    >
    > I nie musisz mieÄ&#65533;. Wystarczy, Ĺźe funkcja sygnalizuje postÄ&#65533;p
    wywoĹ&#65533;aniem
    > zwrotnym (callbackiem). Wtedy przekazujesz funkcji informacjÄ&#65533;, Ĺźe ma
    > wywoĹ&#65533;aÄ&#65533; funkcjÄ&#65533; (np. statycznÄ&#65533; metodÄ&#65533; klasy
    okna gĹ&#65533;Ăłwnego), ktĂłra wie
    > juĹź jak informacjÄ&#65533; o postÄ&#65533;pie zwizualizowaÄ&#65533;. W .NET do
    tego sĹ&#65533;uĹźÄ&#65533; eventy
    > i delegaty.

    Wiele mi to nie mówi (zwłaszcza delegaty, eventy -> 100% zgoda).

    Dobra. Na ten moment czuje się naprowadzony.


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 4. Data: 2009-11-19 15:03:31
    Temat: Re: Visual Studio C++ Express -> dostęp do formy głównej
    Od: "Wiktor S." <wswiktor&poczta,fm@no.spam>

    > OK, ale co zrobić gdy parametrów jest bardzo dużo. Oprawić w
    > strukturę i posłać ją do funkcji?

    Tak. W ten sposób możesz całkowicie rozdzielić interfejs od części
    obliczeniowej, i np. mieć dwa programy jednocześnie - konsolowy i
    okienkowy - oparte na tym samym kodzie. A gdyby program był od początku w
    ten sposób pisany, teraz byłoby ci dużo łatwiej zrobić GUI, może nawet bez
    dotykania części obliczeniowej.


    --
    Azarien

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: