Początki w MS VC++

0

Po iluś tam latach istnienia KAŻDEGO specjalistycznego forum tematów przybywa wraz z użytkownikami, wzrostem ich umiejętności, nowymi trendami, rozwojem wiedzy... Przykładów w/w można mnożyć w dziesiątki czy setki (teraz już chyba tysięcy) tematów i problemów. Sam pamiętam już lata temu, gdy paru ludków doradzało sobie (na już od lat nie istniejącym forum WindowsXP czy jakoś tak) który MS Windows jest lepszy: 95, Millenium czy XP. Chodziło o w miarę dobry system do WSZYSTKIEGO (a jak coś jest do wszystkiego, do zwykle do niczego ;) Po moim poście nt. "MS Windows 2000" kurs dyskusji zmienił się drastycznie, ale to była tylko sugestia (byłem oddanym użytkownikiem tego systemu w tamtym okresie, bo jak na moje wymagania był bardzo uniwersalny - a trochę czasu już od tej pory minęło).
Być może kogoś obrażę, być może ktoś się nieco wnerwi i powie: opcja "szukaj..." A może znajdzie się ktoś inny, podobny do mnie, kto powie: "A gdzie szukaj? A co to szkodzi napisać? - Zawsze to post więcej". Albo mnie moderator przeniesie bądź upomni i wszyscy będą "happy".
Przyznaję szczerze, że brak mi już cierpliwości co do tego szukania... Mam "parę" książek na temat VC C++ (przyznaję, że większość to wydawnictwo Helion), ale 90% tego to wiedza, której mam już po 20 sekundach serdecznie dość. Znów podstawowe wprowadzenia: pętle, tablice, zmienne, logika boolowska i inne "badziewia" - I CO NAJWAŻNIEJSZE... konsola i nieśmiertelne System.Console.WriteLine()... Gdyby nie to, pewnie wielu ludzi wcale by nie wiedziało, co to w ogóle jest konsola. A ilu można policzyć, kto się choć trochę orientuje w komendach DOS?... A co to w ogóle jest MS-DOS? - zapyta ktoś.. Ileż można "łykać" tego samego jak młody rekinek... "Hello Word" itp.,co zna się od lat i często nawet łapię autorów książek na niedopowiedzeniach lub drobnych błędach (może to wina druku)... Takie rzeczy - nie, tam były "lepsze", w asemblerze na Atari 65XE czy Motoroli 68000 (choć po raz pierwszy wystartowałem na ZX Spectrum z o wiele "ambitniejszym" programem razem z kumplem do spółki- i rzecz dziwna: działał bezbłędnie!).. Ale nie tym rzecz.
Na tym forum istnieję już kilka lat, ale zwykle jako obserwator w biegu - wpaść na chwilę, przejrzeć ostatnie posty w locie i mnie nie ma. Nie mam zwykle wiele czasu, bo i lata już nie te, żeby "wisieć" i obserwować każdy temat. Kiedyś bywałem aktywny, ale tych forum już nie ma od lat, więc też i ja zniknąłem z tematu od tej pory i człowiek już nie jest na bieżąco.
Ale przyjdźmy do rzeczy. Być może ktoś pozwolił sobie na tę chwilę mojego wstępniaka i ze zwykłej ciekawości to przeczytał.
Nie jestem "orłem" w C++ (bo jest tego parę odmian w praktyce), ale mam WIELKĄ prośbę do KAŻDEGO, kto będzie miał chwilę czasu, chęci czy cokolwiek...
Forum - jak w nazwie domeny - ma komuś pomóc w ich problemach. Czy się z tego wywiąże - to już inna sprawa. Chęci są z obu stron i ja mam też taką małą nadzieję, że ktoś mi w jakikolwiek sposób pomoże. Czy to prywatnie (w moim profilu jest adres mailowy), czy też na forum - może temat z czasem kiedyś się rozwinie, bo wątpię, czy jestem tu sam z takim kłopotem (w końcu nie każdy kończy szkołę w kierunku informatyki, choć w podstawówkach wiele już się zmieniło w ciągu ostatnich 30 lat).
Znów się rozpisałem. To ma być post, nie list :)
Podstawy MS VC++. Jak to się je, co z tym zrobić i co to za tablice zdarzeń (to akurat wiem ,ale co więcej?) bądź inne kłopoty dla początkującego w tym temacie. Jakieś sugestie - byle nie po angielsku - przykłady, wprowadzenie... A może będę mieć pytania? (to pewnie na 120%). Próbuję od pewnego czasu coś się w tym połapać (korzystam z VC Express c++/C# - ten ostatni chyba podaruję, bo zbyt mi przypomina stary Basic, a zbyt dużo pisania), ale bez przykładów to jak wywarzanie otwartych drzwi. Swoją drogą te wszystkie "łańcuchowe" nazwy czy nowe pojęcia, które są wprowadzane z każdym nowym językiem. Kiedyś w Turbo C++ były procedury i funkcje, potem ktoś wpadł na "genialny" pomysł i były tylko funkcje - zwracały "coś" lub void i było pięknie. A teraz znów metody, klasy i inne p... - wolę pominąć to rozdrabnianie, ale to już szczegół - to nie problem.
C++Borland to dla mnie nie nowość. Zaczynałem w BCB6 i do tej pory trzymam w zapasie pliki hlp, bo jest chyba to najlepszy zestaw podręczny nawet dla laika.
Ale w MS Visual jest zupełnie inne podejście do rzeczy. Środowisko IDE w BCB załatwia większość podstaw za mnie i tam skupiam się na tym, co ważne dla mnie czy też bezpośrednio użytkowników. Same zdarzenia itp. to już pryszcz. TStringList to bardzo użyteczna rzecz, która nie stanowi dla mnie większych tajemnic, kontrolki również, a w VC? Konia z rzędem, kto pokaże mi to w książce nt. Visual C++ (coś więcej niż co to jest metoda Click() i jej wywołanie - chyba że przeoczyłem - przyznam się wtedy bez bólu i ze skruchą).
A więc... Napisałem to wszystko, bo spać nie mogę, a liczę na to, że nastąpi choć mały odzew dla mnie, czyli spragnionego wiedzy, lecz "trochę" niecierpliwego. A może i ktoś inny na tym skorzysta - mam taką cichą nadzieję... Ogólnie w C pewnie wiele nie pomogę, bo szkoły w tym kierunku żadnej nie mam i jestem samoukiem, a 20-30 lat temu mało kto o tym myślał (Delphi jeszcze nawet nie istniało, a Turbo Pascal czy C pochodził "z przemytu" zza żelaznej kurtyny). Kiedyś próbowałem w C na Amidze, ale z braku źródeł wskoczyłem na E - to było coś! Potem przyszła kolej na PC i znów schody, bo zmiana platformy itp. Zresztą do tej pory wśród moich znajomych są TYLKO... użytkownicy. I -co rzecz jasna - zostaję sam na placu boju.
Dzięki za cierpliwość. Dla każdego, kto w jakikolwiek sposób pomoże - szacun!

0

Czy w tym MS VC++ - to chcesz programować w "czystym" API, czy w MFC? Pytam, bo chyba nie do końca to wynika z Twojego listu.
Napisałeś, że Borland C++ to dla Ciebie nie nowość. Czy w takim razie programowałeś w OWL Borlanda?
To mniej więcej te same czasy co VC. Borland zrobił OWL-a, Microsft MFC.
Więc jeśli programowałeś w OWL, to MFC działa podobnie.

Z mojego wieloletniego doświadczenia powiem Ci jednak, że programowanie w "czystym" API jest prostsze i bardziej przejrzyste niż OWL, czy MFC.
Owszem trochę więcej pisania, ale jest pełna kontrola i nie musisz mieć opanowanej tej całej hierarchii klas (a od API i tak nie uciekniesz przy konkretnych problemach do rozwiązania).
Można sobie dość szybko "obudować" kontrolki, żeby uprościć nieco kod i dalej - to już z górki.

0

Jeszcze nie śpię, więc piszę. OWL to naprawdę historia, a z tego nie pamiętam już nic. Pisząc BCB ma na myśli już te nowsze rozwiązania (korzystam z Tokyo). Nie roztrząsam problemów typu co było pierwsze: jajko czy kura. Do tematu klas podchodzę z boku (sama aplikacja w postaci Form to już klasa, ale pod tym względem nie zwracam na to uwagi; mam może światopogląd jak w "starym" C - ważne, by działało jak JA chcę, a nie od strony teoretycznej, oczywiście zgodnie z zasadami, nie jakieś "domorosłe" funkcje czy nieudokumentowane metody, wiem jak to bywało z "medytacjami guru" w Amidze po takich eksperymentach i sam kląłem jak szewc na takich :koderów"). MFC? Z tym pod wersją Express chyba będzie problem, bo zazwyczaj czytam, że nie ma tam wsparcia...
Mój problem "od początku" to głównie start - nie chcę konsoli (to już przeżytek w okienkach - może zabawię się znowu w "obudowę GUI" do UPX, bo czasem warto, ale znów zacznę od zera, bo skleroza nie boli - na szczęście mam wsparcie z jakiegoś kodu źródłowego).
Więcej pisania - to wiem, tylko jak z tym zacząć? Trochę "liznąłem" C# (kiedyś zacząłem studium pomaturalne, ale zabrakło kasy... i niewiele z tego pamiętam, bo to było jeszcze w tamtym wieku i byłem wtedy młody). Znalazłem parę przydatnych przykładów w tytułach "C#. Księga przykładów" bądź z serii "MS VC++ 20xx. Praktyczne przykłady", ale to trochę mało. Być może nie wyrażam się zbyt jasno, bo mam trochę mętlik w głowie i może sam nie wiem jak to wyrazić...
Przykład: tablica zdarzeń. Powiedzmy, że mój VC++ 2010 coś takiego wygeneruje, a jeśli chcę wprowadzić zmiany? Albo cokolwiek? Nawet nie wiem jak to ugryźć. Jestem samoukiem i w (teraz już od pewnego czasu RAD Studio Embarcadero) BCB nie robi mi problemu - jakby tego nie było, bo to działka środowiska. Ale chcę poznać coś bardziej od podstaw i wiem dobrze, że to troszkę trudniejsze. Inne nazewnictwo (czasem śmiać mi się z tego chce, np. myOpenMenuStripOpen_Click() - to tak z głowy - a nie można krócej: miOpenClick?). Wpisałem kilka linijek w C# w oparciu o mój dość prosty w działaniu program do przetwarzania tekstów, ale utknąłem z braku informacji. Te wszystkie klasy, pomoc w EN (której trzeba długo czasem szukać) albo też wcale jej nie ma itp. To już pewien problem, bo maturę miałem z rosyjskiego, niestety. Z angielskim jakoś daję radę, ale czasem nawet mój translator stawia mnie przed znakiem "?" - od strony technicznej to już dla niego problem.
W API pewnie coś czasem znajdę, mogę się po części posiłkować starymi "helpami" z BCB6, bo to chyba jedna z lepszych wersji takiej pomocy (nie udało mi się znaleźć w pomocy RAD znaleźć opisu - na przykład - funkcji strcpy(), a to niby taki prymityw...) Same początki "za rączkę" na pewno coś by pomogły, wiadomo, że błędów też nie uniknę, ale podobno na tym człowiek się uczy. No i wcześniej czy później MUSZĘ sięgnąć po angielski i jakoś sobie radzić.
Pamiętam, jak w latach 80-tych męczyłem wraz z kumplem "fachowca" od Basic na Commodore 64 (my mieliśmy dostęp do ZX Spectrum i "Młodego Technika") i chłop się dziwił co to za instrukcja LET i czemu nie ma PRINT AT. Podobnie tu, ale na innym poziomie. Zresztą mając Kickstart 1.3 na Amidze 500 zrobiłem udane kontrolki z Kickstart 3.0 z Amigi 1200, a później - mając już 1200 - "przy okazji" swój polski system w oparciu o angielski oryginał metodą prób i błędów. Moi kumple zlatywali się wtedy jak przysłowiowe pszczoły do miodu :) Dawno temu i nieprawda...
Był Action! i maszynówka na 8-bitowym Atari, maszynówka i E na Amidze,.. Czas nie stoi w miejscu, a podobno (bądźmy szczerzy, to raczej realia) VC++ Microsoftu to raczej podstawa - w końcu to M$ stworzył ten system, a .NET to mniej czy bardziej udane rozwiązanie na wieloplatformowość. Nawet w RAD mogę się pokusić na Linuxa bądź Androida. Mówiąc krótko i na temat: potrzebne mi jakieś wprowadzenie, które choć w miarę objaśni mi podstawy, później już chyba jakoś pójdzie - w końcu czy to Mazda czy też "maluch" zasada działania i prowadzenia opiera się na tych samych zasadach. Inna jest karoseria, silnik czy skrzynia biegów, ale oba wozy mają 4 koła i (może) piąte w bagażniku :)
I znów się rozpisałem... Chyba weszło mi to kiedyś w krew ;)

3
beblogz napisał(a):

Mój problem "od początku" to głównie start - nie chcę konsoli (to już przeżytek w okienkach

Nieprawda.

0

Jeśli chcesz korzystać w C++ z rozwiązań .NETowych (Windows Forms, czy to tam teraz jest), to powinieneś liznąć podstaw C++/CLI. IMO lepiej od razu pisać w C#.

Może Qt z dedykowanym IDE będzie Ci bardziej pasować.

0

Azarien: Każdemu wolno mówić co się chce ;) - bez obrazy oczywiście. Kiedy mam przetworzyć kilka tysięcy (lub nawet więcej) wierszy z pliku, a niejednokrotnie również poddać je edycji, to konsola w tym przypadku odpada w przedbiegach. Choć wcale nie powiedziałem, że już do niczego się nie nadaje (kompilacja zasobów w C++Borland odbywa się w konsoli albo choćby UPX).
0x666: (Ciekawy nick.) Mam do dyspozycji M$ Visual C++ i C#, więc to nie będzie aż tak wielka różnica, a na pewno muszę wziąć pod uwagę, że wielu userów może mieć "tylko" .NET w wersji 3.5, a to trochę ogranicza możliwości. W sumie to kwestia wprawy, a potem już pójdzie.
Dorwałem właśnie przez przypadek trzeci rozdział "Od zera do gier kodera" i tam jest coś na temat WinAPI itp. Właśnie zacząłem czytać :) I powoli przerabiać dla wprawy program z BCB na Visual C++, bo podobno praktyka czyni mistrza...

2

@beblogz do bycia programistą trzeba być konkretnym i dążyć do celu najkrótsza drogą. Tymczasem twoje posty to ściana tekstu, taki "poemat dygresyjny Beniowskiego" (Beblogz-a).
Już widzę jak się miotasz między jednym tematem a drugim, niczego nie kończąc i niczego się nie ucząc. To, że zarejestrowałeś się 3 lata temu, a pierwszy raz piszesz, też pasuje do tej obserwacji.
To wskazuje, że masz kłopoty z koncentracją na konkretnym temacie, dlatego moja rada to skoncentruj swoje siły na koncentracji (sorry za pleonazm). Wybierz jeden temat i się go trzymaj dopóki go nie opanujesz.

Kupowanie przypadkowych książek z Heliona na pewno jeszcze bardziej cię rozprasza. Większość pozycji Heliona to zmarnowany czas i pieniądze (większość pozycji jest po prostu odtwórcza, a cześć jest nawet niemerytoryczna).

Azarien: Każdemu wolno mówić co się chce ;) - bez obrazy oczywiście

Prosisz o pomoc jak zacząć, a jak ją dostałeś uwagę, że masz błędne pojęcie o czymś, to się od ciebie odbija, bo ty wiesz lepiej. Gwarantuje ci, że Azarien się nie obraził, nawet mu to przez głowę nie przeszło, ale za to, automatem zostałeś "odpowiednio" sklasyfikowany.

90% narzędzi programistycznych działa w konsoli i jest łączonych za pomocą skryptów uruchamianych w cmd bash shell itd itp... .
Znaczna część naszej pracy polega na czytaniu tego co program wypluł na standardowe wyjście.

0

Czytałem wyrywkowo, bo te teksty zbyt długie i w większości lanie wody, ale moim zdaniem potrzebujesz:

  • QtCreatora - jeśli programujesz okienka w C++ to nie idź w MVS. To środowisko nie jest do tego przystosowane (trzeba zastosować pewne triki, żeby ruszyło, a i tak będziesz musiał kombinować [CLI])
    oraz

Te wszystkie klasy, pomoc w EN (której trzeba długo czasem szukać) albo też wcale jej nie ma itp. To już pewien problem, bo maturę miałem z rosyjskiego, niestety. Z angielskim jakoś daję radę, ale czasem nawet mój translator stawia mnie przed znakiem "?" - od strony technicznej to już dla niego problem.

  • kurs j. angielskiego - bez tego masz mocno ograniczone możliwości w programowaniu (a szczególnie w jego nauce)
0

@beblogz: Ale jakie jest pytanie?

Sprawa jest prosta pod warunkiem, że masz pomysł na program. Wtedy spisujesz sobie(nawet w notatniku) co on ma robić, jak ma wyglądać(nawet w paint'cie). Jak już to wiesz, to odpalasz IDE i piszesz kod. A jak nie wiesz w jaki sposób coś zaimplementować to pytasz Google. Ot, cała filozofia.

0

Problem po części rozwiązany.
Jeśli chodzi o pomysł programu (jakiegokolwiek), to z tym nie ma problemu. Na razie chcę na zasadzie wprawki i sprawdzenia siebie przenieść kilka pomysłów na platformę VC.
C#: Tu już troszkę się rozkręciłem, ale dużo czasu spędzam nad wyszukiwaniem funkcji, które potrafią być porozrzucane po różnych klasach; często też istnieją pod zmienioną nazwą. Na szczęście nie jest źle i jakoś sobie radzę. Większy problem może być z pewnym typami danych, do których jestem przyzwyczajony w Embarcadero (np. TStringList), ale też może jakoś dam sobie z tym radę.
C++: Tu mam pewnego rodzaju schody. Nie siedziałem na razie nad tym zbyt długo, ale sprawa wygląda tak: Wersja 2008 Express - buja się jak ta lala od startu i nie ma żadnych problemów z kompilacją. Wersja 2010 Express: nowy projekt okienkowy (nawet bez kontrolek), F5 i błąd linkera (treść poniżej). No jeszcze żebym cokolwiek napisał, choćby spację, a potem ją skasował. To mnie zastanawia. Przejrzałem podstawowe pliki CPP i nie widzę żadnego błędu, jeśli chodzi o dołączanie plików H.
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
I to było na tyle... Przynajmniej na razie ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1