C++ + Visual Basic

0

Witam. Mam pewną koncepcję, ale nie mam zielonego pojęcia, jak ją zrealizować. Może na początek wyjaśnię, o co chodzi:

Napisałem projekt, w C++, z użyciem silnika graficznego Irrlicht (poruszanie się po mapie 3d). Wygląda to nawet nieźle i strasznie profesjonalnie. Uznałem, że fajnie by było, gdyby użytkownik miał możliwość wyboru rozdzielczości i sposobu renderowania (OpenGL/DX/Software), tym bardziej, że jedyna różnica w programie, to inne parametry 1 funkcji. Chcę, żeby to wyglądało porządnie, a zupełnie nie znam WinAPI, żeby napisać w C ładne okienko.

Zrealizowałem to w ten sposób, że program przyjmuje te parametry jako argumenty wywołania, a obok, w tym samym katalogu siedzi sobie program napisany w VB, który wyświetla okienko z odpowiednimi przyciskami, radiobuttonami i tak dalej, a po naciśnięciu przycisku START wywołuje uruchamia właściwy program, a sam kończy działanie. W tym akurat przypadku to wystarczyło, ale pewnie można te języki jakoś połączyć...

Wnioski:
Zadanie, które w C wymagałoby X kb kodu (wyświetlenie okienka, oprogramowanie zdarzeń) tutaj można było zrealizować przez parę kliknięć myszką i kilkanaście linijek kodu.... Czyli ok. 15 minut, wliczając czytanie tutoriala do VB.

Jednocześnie koszmarna składnia uniemożliwia właściwie napisanie w tym języku czegokolwiek, co nie dotyczy bezpośrednio obsługi interfejsu - pomimo kilku prób nie udało mi się nawet zapisać 2 zagnieżdżonych IFów tak, żeby pominąć koszmarną instrukcję GOTO. W efekcie po 5 minutach kod (którego "logika" była naprawdę b. prosta) był już tak nieczytelny, że sam go nie rozumiałem.

Czy da się więc używać w VB funkcji napisanych w C ? Chodzi mi o to, aby VB obsługiwał tylko interfejs użytkownika, a cała logika aplikacji i wszystkie obliczenia itp można było napisać w C. A może nawet dałoby się używać całych klas z C++? Wszak teoretycznie VB to język obiektowy...

0

niekoniecznie, ale możesz w C++ przez polecenie system(); wywołać pogram napisany w vb. Może jednak warto i zmienianie rozdzielczości napisać w C++.

0

Zapewne masz Platform SDK - zerknij na sampla
\Com\Fundamentals\DCom\Simple
Jest tam przykład prostego serwera COM(exe)
Klasy i metody oczywiście wstaw swoje, dopisz jakiegoś typelib z definicją wszystkich metod i klas które chcesz udostępnić i zarejestruj serwer jako dual, wtedy w VB (i js, vbs...) będziesz mógł używać wszystkich klas C++ które udostępnisz i to na żywo

Nie zapomnij o CoRegisterClassObject() w main() :D
Gdybyś nie wiedział jak z tym typelib to odsyłam na http://spec.winprog.org/ - COM Automation: Type Information Part I

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