Visual Studio 2010 SP1 – Help Viewer
Microsoft is planning to include a new help viewer with Visual Studio 2010 SP1, which is long overdue
You can see a presentation here.
Category Archive for Software DevelopmentVisual Studio 2010 SP1 – Help ViewerMicrosoft is planning to include a new help viewer with Visual Studio 2010 SP1, which is long overdue You can see a presentation here. Free eBooks Related to Microsoft TechnologiesHere is a list of free eBooks related to Microsoft technologies.
Enjoy Native C++ Development is Still Being UsedI just stumbled upon an article mentioning that Evernote abandoned WPF and the Microsoft .NET framework and rewrote their application from scratch in native C++ code
Analyze Your C++ Code Using CppDependCppDepend is a tool that you can use to analyze your C/C++ code. I gave it a try and it’s pretty powerful. CppDepends has support for 60 different code metrics. It has something called Code Query Language (CQL) that allows you to perform queries on your code like the following:
It can generate several different kind of graphical representations of your code, for example: I think this tool will help a lot when working on a new code base to understand the structure of the code. Here is a description from the vendor: Improve your code base quality. Refactor and Improve your design and architecture. Assist your migration. Defining x64 Target Platform for VC++ ProjectsMarius Bancila posted an excellent post on his blog explaining how to define x64 target for you Visual C++ Projects.
Windows Phone 7 Final Developers Tools ReleasedMicrosoft has released the final version of the Windows Phone 7 developers tools
Download the tools here. Querying Bing Using the New Windows 7 Web Services C++ API (WWSAPI)According to MSDN, WWSAPI is a native-code implementation of SOAP which provides core network communication functionality by supporting a set of the WS-* and .NET-* family of protocols. WWSAPI is designed to be used by components/applications which fall into one of the following categories:
Using this brand new API, it is possible to make native-code SOAP based web services and clients for SOAP based web services. I wrote an article that explains how to build client applications that use SOAP based web services. The web service that I used in the examples is the Microsoft Bing SOAP API which allows you to search for text, images and so on. The article just went live on CodeGuru. Read the full article. The C++0x Range-Based For LoopC++0x adds a new looping structure: the Range-Based for loop. This makes it easier to loop over elements of lists. It works with standard C arrays and types that have begin() and end() functions returning iterators like almost all STL containers. Below is an example of a range-based for loop looping over a standard C-style array, incrementing each value by 1.
Note that this example also uses the auto type deduction introduced in C++0x. New Windows Phone Developer Tools CTP is Compatible with Visual Studio 2010 RTMMicrosoft has just released a refreshed version of the Windows Phone Developer Tools CTP. The biggest change is that it is now compatible with the final version of Visual Studio 2010 RTM The CTP includes the following components:
Get it here. Technical Editor for “Ivor Horton’s Beginning Visual C++ 2010″
Below is a description of what you can expect from the book. By following author Ivor Horton’s accessible tutorial approach and detailed examples you can quickly become an effective C++ programmer. Thoroughly updated for the 2010 release, this book introduces you to the latest development environment and teached you how to build real-world applications using Visual C++. With this book by your side, you are well on your way to writing applications in both versions of C++ and becoming a successful C++ programmer. Ivor Horton’s Beginning Visual C++ 2010:
Visual Studio 2010 RTM not Compatible with the Windows Phone Developer Tools CTPA few days ago, Microsoft released Visual Studio 2010. Unfortunately, for the time being, this final version is not compatible with the Windows Phone Developer Tools CTP that was released a while ago. According to Charlie Kindel:
The Windows Phone Developer Tools are being updated and a version that supports the final version of Visual Studio 2010 will be released in a few weeks. In the meantime, Charlie Kindel recommends the following if you need the retail version of Visual Studio 2010 together with the Windows Phone Developer Tools CTP:
Note that installing the Windows Phone Developer Tools CTP to a VPC image is not supported. Register here to be informed when an updated version of the Windows Phone Developer Tools is released. Microsoft Visual Studio 2010 and .NET Framework 4 Released
Today, Microsoft released Visual Studio 2010 and the .NET Framework 4. A lot of new features are included. One of them is a completely new editor.
Visual C++ 2010 also includes a lot of new features, some of them are:
Read the full press release here or watch the keynote. Later this week, Silverlight 4 will also be released to the web (RTW). At that time, an update for Visual Studio 2010 will also become available that will allow you to develop applications using Silverlight 4. Overview of New Features in Visual C++ 2010A friend of mine, Marius Bancila, wrote several blog posts with details about new features in Visual C++ 2010. He touches the following features:
You can read his posts here. They give you a good idea of new features in VC++ 2010 How To Handle Custom URL Protocols with the Microsoft WebBrowser ControlNow that you know “How To Use the Microsoft WebBrowser Control to Render HTML from Memory” and “How To Navigate to an Anchor in the Microsoft WebBrowser Control when Rendering HTML from Memory“, it’s time to learn how to handle custom URL protocols to tailor the navigation inside the WebBrowser Control to fit your application. The following demonstrates a custom URL protocol called “app”: <a href="app://some.target">Test</a> When you would put this link in a normal Internet Explorer window, clicking the link will generate an error because IE does not know how to handle the APP protocol. The name APP is chosen arbitrarily. You can use whatever you want. Handling these custom protocols in your C++ application is actually pretty simple and it doesn’t even involve any real COM coding like in the previous articles. The first thing you need to do is to add a handler for the BeforeNavigate2 handler. Open the resource editor and open your dialog with the WebBrowser control. Right click the WebBrowser control and select “Add Event Handler…”. Select “BeforeNavigate2” as message type, select the appropriate class and click “Add and Edit”. This handler will be called right before the WebBrowser control will navigate to a new page. To handle the custom protocol, implement the handler as follows:
The flow is pretty straightforward. The URL protocol is extracted; if it’s not our protocol, we let Internet Explorer handle the URL for us. If it is our custom “APP” protocol, we first set Cancel to TRUE which will prevent Internet Explorer from handling this URL protocol. Once that is done, we are completely free to implement the handling of the “APP” protocol however we want. As demonstration I just write a new HTML document from memory which will just mention that we are processing an “APP” protocol URL and that will also display the target part of the URL. You can quickly test the code with the following piece of HTML rendered from memory: WriteHTML(L"<html><body>" L"<p><a href=\"app://FirstAppProtocolTestLink\">test 1</a></p>" L"<p><a href=\"APP://SecondAppProtocolTestLink.Withdots\">test 2</a></p>" L"</body></html>"); Run the application, click on the “test 1″ or “test 2″ link and see what happens. That’s it for handling custom URL protocols in C++ How To Navigate to an Anchor in the Microsoft WebBrowser Control when Rendering HTML from MemoryIn my previous blog entry titled “How To Use the Microsoft WebBrowser Control to Render HTML from Memory” I described a method how you could use the Microsoft WebBrowser Control to display HTML from memory. One commenter said that it was not possible to navigate to an anchor in the body onload handler. I did some research and it seems all navigation within the rendered page is not working. For example, the following piece of HTML code will not work correctly: <a href="#n25">Jump to anchor n25</a> <a name="n25">25</a> It took me a while to find a workaround, so that’s why I’m posting it now for other people to use. Basically, we cannot use the standard navigation techniques. I tried several possible workaround and the only one that I got working properly is by manually scrolling the window until the requested anchor is visible. It sounds complicated, but it really works pretty nicely. I wrote this little wrapper function to do all the hard work.
What it does is it gets a pointer to the document. Then gets a list of all the anchors in the document and get the anchor with the given name out of that list. Once we have the target element, we calculate the offset from the top of the document. This is done in a while loop, because the target anchor could be inside another element like a div or a table. After calculating the offset, we get a pointer to the HTML window and call the scrollTo function to make it scroll to the anchor position. Now the only thing you need to do is to render your HTML using the method in my previous blog entry and then call this new ScrollToAnchor function with the name of the anchor to which you want to scroll. Start Developing Applications for Windows Phone 7 SeriesThe Windows Phone Application Platform was revealed at MIX 2010. If you couldn’t make it to Las Vegas to attend MIX, you can find the keynotes and sessions here. They explain in great details the Windows Phone 7 Series and how to develop applications for it. The WP7S developer platform contains 2 frameworks:
Code is written in C#. Everyone can start writing applications for the new phone platform. You only need to download 1 free package. This packages contains:
Download the package to get started. Only Windows Vista and Windows 7 are officially supported to run the tools. Note that the tools are currently in CTP state so they are not yet final. If you want to use Expression Blend you have to download it separately. More information can be found on the Windows Phone 7 Series Developer Site, where you can also find developer guides, more detailed information, Windows Marketplace submission guidelines, forums, a few code samples etc… How To Use the Microsoft WebBrowser Control to Render HTML from MemoryMicrosoft has a WebBrowser control that is actually an Internet Explorer control that you can use to display HTML in your own applications. More information about this WebBrowser control can be found on MSDN. By using this control it’s very easy to display online or offline webpages. However, it’s not immediately obvious how to make it display HTML that you might have in a memory buffer. Of course, one solution is to write the HTML to a temporary file and then load that file using the WebBrowser control, but obviously there is a better way for doing this which I will explain below. The first thing you have to do is to add the WebBrowser control to your dialog. So, in Visual Studio, open the resource editor and then open the dialog onto which you want to put the WebBrowser control. Once the dialog is opened in the resource editor, right click on an empty space on the dialog and select “Insert ActiveX Control…”. This will open a new window in which you can select “Microsoft Web Browser” and then click OK. Visual Studio will automatically create a wrapper class for this ActiveX control which will probably be called explorer.h and explorer.cpp while the wrapper class will most likely be called CExplorer. Now, right click the WebBrowser control on your dialog and select “Add Variable”. Make a variable with category set to “Control” and with the variable type set to the wrapper class “CExplorer” and hit OK. Now we can start writing code. The first thing required is to load up some basic document; I use about:blank. Do this in your OnInitDialog handler as follows. COleVariant loc(L"about:blank"); m_explorer.Navigate2(loc, NULL, NULL, NULL, NULL); The above is very important. If you don’t load an initial document, the WebBrowser control will not render any HTML that you try to push to it. This also means that before you can start writing HTML from memory in the WebBrowser control, you have to wait until the initial document has been fully loaded. This can be done with the “DocumentComplete” event. In the dialog editor, right the WebBrowser control and click on “Add Event Handler…”. Select “DocumentComplete” as message type, select the appropriate class and click “Add and Edit”. You can use that handler to change a boolean variable in your code to mark whether the document has been fully loaded. When it is fully loaded you can start writing HTML from memory to it. Once that is finished, you can add the following helper function:
With the above function, it’s very easy to dynamically create and display HTML from memory. For example: WriteHTML(L"<html><body><h1>My Header</h1><p>Some text below the header</p></body></html>"); Note that the above code is expecting a Unicode build. If you don’t use Unicode, you need to change the wchar_t types and you need to change the way how you allocate the BSTR variable. That’s it. Pretty easy if you know how to do it, but it took me some time to figure it out. [ Update: Fixed some typos and added mshtml.h reference. ] [ Update 2: Added a call to "doc2->close();" after "doc2->write()" and added code to check the result of the doc2.Attach() call. ]
Breaking Change for RValue References in Visual Studio 2010 RCThe Release Candidate of Visual Studio 2010 has changed the behaviour of RValue references slightly compared to the implementation in the Visual Studio 2010 beta versions. This is because the C++0x standard commitee has changed the RValue reference feature a bit and Visual Studio 2010 RC has incorporated those standard changes. Unfortunately, this might lead to compiler errors when you try to build code that is following the old standard. Let me give an example. Previously using a beta version of Visual Studio 2010 that was using the old C++0x standard, the following code would compile without any problems. #include <iostream> using namespace std; However, when trying to compile this using the latest release candidate of Visual Studio 2010, you will get the following errors: rvalue_test.cpp(18): error C2664: 'increment' : cannot convert parameter 1 from 'int' to 'int &&' You cannot bind an lvalue to an rvalue reference rvalue_test.cpp(21): error C2664: 'increment' : cannot convert parameter 1 from 'int' to 'int &&' You cannot bind an lvalue to an rvalue reference These are related to the lines that are trying to increment a and b. Incrementing an expression or a literal still works as before. To get rid of those errors, you need to convert the lvalue to an rvalue. You can use the std::move function for this as shown in red below. #include <iostream> using namespace std; This now compiles without any errors and produces the following output: value = 10 a=11, b=20, result=11 value = 20 a=11, b=21, result=21 value = 32 a=11, b=21, result=33 value = 3 a=11, b=21, result=4 Now, it again works as expected Visual Studio 2010 and .NET Framework 4 Release CandidateMicrosoft has released the Release Candidate version of Visual Studio 2010 and the .NET Framework 4. See Scott Guthrie blog post about it. Right now it’s available for MSDN subscribers. Two important things to know (from Scott Guthrie blog post):
Visual Studio 2010 and .NET Framework 4 Beta 2Visual Studio 2010 and .NET Framework 4 Beta 2 are now available. The final version is scheduled for 22nd of March 2010. I’m looking forward to it For Visual C++ developers there are lots of new things to look forward to, like parallel programming, MFC ribbon resource editor, easy application local deployment model etc etc… When you use the .NET Framework you will apparently be able to have deployments with up to 81% reduction in the framework size by using the Client Profile. According to the press release:
The product lineup is simplified with the following versions:
|