-
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� 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.
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� skór� program napisany pierwotnie pod
konsole. W��c
> zy�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 param
> etr,
>
> I to jest bardzo dobry pomys�.
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�) 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.
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