Entries for tag "visual studio", ordered from most recent. Entry count: 62.
# What is C++/CLI ?
Fri
25
Sep 2009
Today I've started learning C++/CLI. It's a Microsoft technology that allows to write managed code for .NET platform in C++. But I can see it's not just a Microsoft idea to introduce custom language extensions. It's a massive piece of technology and even some C++ gurus were involved in its development, like Herb Sutter and Stanley Lippman. It's also approved as ECMA-372 standard.
So what exactly is C++/CLI? It's yet another language for .NET, just like C# or VB.NET, but it has the unique feature of being compatible with native C++ and being able to freely mix managed and unmanaged code.
For many people it may trigger some bad connotations with ugly syntax like __gc, __interface, __property etc., but that's not true. Syntax like this existed in Managed Extensions for C++, but C++/CLI is its new, improved version introduced in Visual Studio 2005.
Here is a screenshot from my first experiment, where I've created a property grid control from .NET next to a native Direct3D9 device initialized inside a panel control.
Just look at how old good native code can be mixed with managed one:
#include <d3dx9.h> namespace ManagedCpp02 { using namespace System::Windows::Forms; ... public: Form1() { PropertyGrid^ propertyGrid1 = gcnew PropertyGrid(); ... IDirect3D9 *d3d = Direct3DCreate9(D3D_SDK_VERSION); System::Diagnostics::Debug::Assert(d3d != nullptr);
Microsoft wasn't afraid to introduce new keywords and operators to the language. These designed to operate on managed code work next to the native ones, so you can define and use native and managed classes next to each other just like this:
class NativeClass { }; // Allocate from unmanaged heap - memory must be freed. NativeClass *nPtr = new NativeClass(); delete nPtr; ref class ManagedClass { }; // Allocate from managed heap - garbage collected. ManagedClass ^mPtr = gcnew ManagedClass();
Comments | #c++ #.net #visual studio Share
# Magic Numbers in Visual C++
Mon
10
Aug 2009
Uninitialized variables in C++ language are not filled automatically. They can contain any random data. It's as good as no range checking in access to arrays, because it doesn't waste time out of programmer's control. But on the other hand this rule makes us programmers responsible for thinking about when, where and how do we ensure that we don't use variables before their initialization or index arrays out of their range.
Visual C++ helps us with that. While in Release compilation, variables and fields are really uninitialized and contain random data, but under Debug configuration they are filled with special magic numbers. If we debug the program, hexadecimal codes of these numbers can tell us about the kind of error we made in the code. Just press "Hex" button on Debug toolbar to see all numbers as hexadecimal. Here are some of magic numbers used by Visual C++:
Interesting thing is that compiler doesn't warn about uninitialized fields in classes, despite it knows about uninitialized local variables and shows "Run-Time Check Failure #3 - The variable 'v' is being used without being initialized.". So whenever you have a bug which appears only in Release configuration and not in Debug, good chances are that you've forgotten to initialize a field in a class.
By the way, some programmers think that debugging is possible only in Debug configuration (as its name says). You acually can debug also in Release mode, although step by step execution may sometimes work strange due to optimizations like inlining, some watches may show invalid values and sometimes looking into objects doesn't work (probably bacause of optimized way "this" pointer is passed).
Comments | #visual studio #c++ Share
# MFC i Smart PropertyGrid
Sat
06
Jun 2009
Używam w pracy MFC i powiem wam, że wbrew temu co się mówi (i co wcześniej powtarzałem za innymi), to wcale nie jest taka zła biblioteka. Ta dostępna w płatnych wersjach Visual C++ biblioteka do GUI to tak naprawdę cienka, obiektowa nakładka na WinAPI. Tak więc ma swoje klasy odpowiadające m.in. różnym kontrolkom interfejsu, obiektom GDI itp., ale z zestawów flag bitowych czy też zasobów z zaprojektowanymi graficznie okienkami korzysta już z tych samych, co czyste WinAPI. Nie oferuje zbyt wiele ponad to, co API systemowe, ale trochę uprzyjemnia pracę. Jeśli ktoś zna dobrze WinAPI, to nie ma kłopotów z opanowaniem MFC ani powodów do narzekań, chyba że co najwyżej na to, że biblioteka jest tym czym jest i niczym więcej.
Szukałem wczoraj rozwiązania kwestii kontrolki Property Grid dla MFC i znalazłem bibliotekę Smart PropertyGrid.MFC firmy Visualhint. Jest świetna - ładna, potężna, rozszerzalna, a dzięki dobrze zaprojektowanemu interfejsowi opartemu na wielu klasach i koncepcji iteratorów, także wygodna w użyciu. Twórcy udostępnili ją całkowicie za darmo, bo teraz rozwijają i sprzedają wersję tej kontrolki dla .NET (choć przecież platforma .NET ma taką kontrolkę w standardzie).
Comments | #c++ #gui #libraries #winapi #visual studio Share
# Microsoft Visual Studio 10 Beta - moja recenzja
Thu
28
May 2009
Można za darmo ściągnąć i zainstalować wersję Beta nowego Microsoft Visual Studio 10. Dałem się skusić i zainstalowałem go na laptopie. Oto moja mała racenzja:
GUI przepisali z użyciem WPF. Jest przez to ładniejsze, ale straszliwie zamula. Jak wcześniej Visual chodził bardzo szybko (w porównaniu z czymkolwiek napisanym w Javie :) tak teraz nawet zwykłe zaznaczanie myszką kodu czy wpisywanie znaków ma widoczne, nieprzyjemne opóźnienie.
Zakładki z otwartymi plikami można teraz dokować jak zwykłe panele, jako osobne okna albo też tworząc nowe obszary z zakładkami. To daje nowe możliwości wykorzystania wielu monitorów do pokazywania równocześnie kilku plików z kodem.
Spośród innych nowości, rozwijane są jak zwykle przede wszystkim technologie służące do tworzenia systemów informatycznych, aplikacji bazodanowych itp. klimatów :) Razem z nowym Visualem dostajemy .NET Framework 4.0. Tym nie mniej Microsoft postarał się tym razem także o udogodnienia dla programistów aplikacji natywnych pisanych w C++, a nawet... uaktualnił bibliotekę MFC.
Wygląda na to, że kompilator C++ wspiera teraz elementy nowego standardu, w tym static_assert (asercja sprawdzana w czasie kompilacji), auto (zamiast typu - kompilator sam dedukuje typ, dzięki czemu nie trzeba wpisywać długaśnych wyrażeń jak std::multimap
Comments | #visual studio #c++ Share
# Instalacja Qt 4.5 dla Visual Studio 2008 Professional
Tue
17
Mar 2009
Tak jak obiecałem, napiszę o moich przebojach z instalacją Qt. Ściągnąłem i zainstalowałem darmowe Qt 4.5. Chodzi o wersję dla Windows, a moim IDE jest Visual Studio 2008 Professional.
Sprawa okazała się niełatwa. Najpierw zainstalowałem gotową paczkę "Qt SDK for Windows". Wyglądała super - zawiera dokumentację wraz z przeglądarką Qt Assistant, przykłady, narzędzia (Qt Designer, Qt Linguist), nagłówki i... niestety biblioteki do linkowania w formacie A, a nie LIB :(
Przekompilowałem całą bibliotekę (configure, nmake) i... po tym programy pisane w Visual C++ udało się kompilować, linkować, uruchamiać, ale za to narzędzia Qt przestały działać. Narzekały na złą wersję pliku QtCore4.dll. Okazało się, że w katalogu z biblioteką są aż trzy różne wersje tego pliku i... żadna tym programom nie odpowiada :(
W końcu, na drugi dzień, postanowiłem dać Qt jeszcze jedną szansę. Ściągnąłem tym razem pakiet ze źródłami - "Qt libraries 4.5 for Windows". Następnie uruchomiłem kompilację. W tym celu trzeba dopisać do zmiennej środowiskowej PATH ścieżkę do qt-win-opensource-src-4.5.0\bin, uruchomić Start / Programy / Microsoft Visual Studio 2008 / Visual Studio Tools / Visual Studio 2008 Command Prompt, przejść do katalogu z Qt i wydać polecenie configure, a potem nmake.
Kompilacja się udała. Zajęła około 2 godziny. Po zakończeniu zajrzałem do katalogu, a tam czekała na mnie miła niespodzianka - gotowe nie tylko pliki H, LIB, ale też i wszystkie narzędzia oraz dokumentacja. Słowem - biblioteka zainstalowana i gotowa do użycia.
Zainstalowałem jeszcze wtyczkę "Visual Studio Add-in". Piszą, że jest w wersji Beta 2, ale działa bez zarzutu. Po instalacji trzeba tylko wskazać jej ścieżkę do biblioteki wybierając z menu Qt / Configure Qt Versions. Integruje się z Visual Studio w taki sposób, że dostępne są nowe kreatory projektów w File / New / Project, IDE automatycznie uruchamia moc, rcc, uic itp. dodatkowe "przetwarzarki" Qt, a kliknięcie w dodany do projektu plik ui czy qrc automatycznie otwiera Qt Designer i Qt Resource editor. Słowem - wszystko działa.
Zacząłem pisać w Qt mały, ale fajny program (premiera wkrótce...) i powiem tak: Każdy ma prawo nie wierzyć, że w C++ można pisać programy okienkowe równie szybko i wygodnie jak w C#... dopóki nie zobaczy Qt :)
Comments | #libraries #gui #visual studio #c++ Share
# Visual Studio - Find/Command Box
Mon
29
Dec 2008
Find/Command Box to przydatna funkcja Visual Studio. Ma postać pola edycyjnego na pasku narzędzi u góry. Może służyć do wyszukiwania tekstu w dokumencie bez otwierania okienka Ctrl+F, ale ma też więcej funkcji. Na przykład wpisanie tam hasła i wciśnięcie F1 otwiera pomoc. Wpisanie tam numeru linii i wciśnięcie Ctrl+G przenosi do tej linii.
Z kolei wpisanie tam znaku ">" i dalej polecenia (lub jego skrótu) wraz z parametrami powoduje wykonanie polecenia Visual Studio. W ten sposób można na przykład szybko i wygodnie otworzyć plik (polecenie "File.OpenFile" lub w skrócie "of"). Zobacz: Lista poleceń przyjmujących parametry, Lista skróconych aliasów do poleceń.
Okienko to można aktywować skrótem Ctrl+D lub Ctrl+/ (ten drugi wpisuje od razu znak ">").
Comments | #visual studio #gui Share
# Professional Developers Conference 2008
Wed
17
Dec 2008
PDC - Professional Developers Conference to konferencja firmy Microsoft. Dla niektórych to nie nowość, bo tegoroczna edycja odbyła się 27-30 października 2008, ale ja dziś właśnie przeglądałem sobie prezentacje z tego wydarzenia, dostępne na stronie PDC 2008 / Agenda / Sessions. Jest tam w sumie 207 sesji, z których do większości można pobrać prezentację PPTX. Wykłady dotyczą głównie "biznesowo-bazodanowych" technologii Microsoftu, jak .NET, SQL Server, ADO, ASP itp.
Ci którzy kodują w bardziej tradycyjnych technologiach też mogą jednak znaleźć tam ciekawe rzeczy. Moją uwagę zwróciły m.in. informacje na temat co nowego pojawi się w kolejnych wersjach produktów firmy, jak .NET Framework 4.0 czy Visual Studio 10. Widać, że Microsoft żywiołowo idzie do przodu i rozwija swoje oprogramowanie zgodnie z nowoczesnymi trendami. Pojawią się fajne narzędzia, biblioteki oraz rozszerzenia języków programowania (C++, C#) wspierające programowanie równoległe. C# stanie się bardziej dynamiczny. Samo IDE natomiast otrzyma nowe możliwości, m.in. będzie mogło wyświetlać minimapkę z kodu, taką o jakiej zawsze marzyłem i jaką opisałem kiedyś wśród swoich pomysłów :)
Comments | #visual studio #.net #c++ #windows #events #gui Share
# Visual C++ z wiersza poleceń
Wed
03
Dec 2008
Jeśli chcemy, żeby kompilacja projektu Visual C++ była częścią jakiegoś większego procesu wsadowego, można odpalić kompilator z wiersza poleceń, z odpowiednimi parametrami. Służy do tego plik devenv.com. Składnię jego przełączników można znaleźć w MSDN w rozdziale Devenv Command Line Switches. Na przykład uruchomienie kompilacji projektu wygląda tak:
devenv.com MojaSolucja.sln /Build Debug /Project MojSilnik.vcproj