Aus dem offiziellen Deutschen Windows Phone 7 Series Blog –>
Es sind nur noch wenige Tage bis zur MIX10, der Konferenz, auf der wir über die offizielle Entwicklerstory zu WP7S sprechen werden. Doch die Spekulationen kochen inzwischen immer höher, und ich erlebe das hier z.Zt. täglich auf der CeBIT – ca. 50% der Fragen drehen sich darum, wie & womit für die neuen Phones entwickelt werden kann (und das Interesse, das zu tun, ist riesig, was mich sehr freut).
Das Produktteam hat deshalb, um die Sache etwas zu beruhigen und die Erwartungen für Las Vegas richtig zu setzen, eine Art offizielle Aussage über Charlie Kindels Blog veröffentlicht. Hier ist die Essenz daraus: Softwareentwicklung für Windows Phone 7 Series beruht auf
.NET
Silverlight (!)
XNA (!)
maßgeschneiderten Tools dafür von Microsoft
Web-2.0-Mechanismen
Die Katze ist damit aus dem Sack: Silverlight als neue Oberflächentechnologie wird es auf einfache Art und Weise möglich machen, Apps zu bauen, die in Sachen User Experience dem restlichen WP7S-UI in nichts nachstehen. XNA wird für fantastische, auf einem Windows Phone bisher nicht dagewesene Games sorgen. Ich denke, das ist eine großartige Botschaft für alle, die von uns einen mutigen Neuanfang erwartet haben – wir haben ihn gemacht, in Entwicklerdingen genauso wie bei der Konzeption der Phones generell.
Mehr Details auf der MIX – und ab dann online und auf diversen Veranstaltungen auch hierzulande.
P.S.: Und übrigens – heute existierende Anwendungen werden auf WP7S nicht lauffähig sein, das lassen die fundamentalen Neuerungen einfach nicht zu. Es heißt also Ärmel hochkrempeln und portieren oder ganz neu starten – die neuen Möglichkeiten legen es nahe, und die Tools werden es einfach machen!
Nicht erst mit seiner neuesten Version hat sich der Office SharePoint Server im Webbereich als äußerst flexibles Allround-Werkzeug etabliert und ist entsprechend weit verbreitet. Trotzdem pflegen nicht wenige Entwickler ihre Vorurteile gegenüber der Anwendung, etwa: SharePoint ist eh nur ein System zum Verwalten von Listen!
Dass die Realität weit von dem entfernt ist, zeigt Ihnen MSDN im Rahmen der kostenlosen TechTalk-Roadshow, die im März wieder in fünf Städten Station macht. MSDN-Experte Tom Wendel gibt dabei einen umfassenden Einblick in den Funktionsumfang des neuen SharePoint 2010 und zeigt aus Entwicklersicht, wo überall Sie bei der Anwendung selbst Hand anlegen können, um dem SharePoint zu vollem Potential zu verhelfen.
Heute habe ich mir für das Video des Tages Unterstützung von unserem User Experience-Evangelisten Clemens Lutsch geholt. Er ist ein Experte auf dem Gebiet der neuartigen Benutzeroberflächen. Er befasst sich seit der ersten Stunde mit Microsoft Surface, einem Tisch, der über eine Oberfläche bzw. eine Tischplatte verfügt, mit der man sämtliche Interaktionen steuern kann. Die gesamte Interaktion wird über grafische Elemente, Bluetooth-fähige Geräte oder aber mit den Händen vorgenommen. Spannend dabei ist, dass man gleichzeitig mit nahezu beliebig vielen Händen und Fingern mit dem Tisch interagieren kann. Ein einfaches Beispiel ist die zeitgleiche Betrachtung von Bildern durch verschiedene Benutzer. Jeder kann Bilder auf dem Tisch ansehen, heranziehen, vergrößern, drehen und sortieren. Im Prinzip fast genauso, wie man es von herkömmlichen Fotoabenden mit Familie und Freunden gewohnt ist. Aber haben sie schon mal versucht ein klassisches Foto auf dem Tisch zu vergrößern, um die Details genauer zu betrachten? Ja, so etwas funktioniert nur mit dem Surface.
Ganz ehrlich, der Surface ist wegen der integrierten Hardware und der enorm wuchtigen Tischplatte, nicht ganz preiswert und derzeit nur über Microsoft direkt zu beziehen – beim Multimedia-Fachhändler um die Ecke steht er also noch nicht zur Verfügung. Allerdings kann ich jedem empfehlen, mal in den O2-Flagship-Store in Köln zu gehen, dort haben Partner von Microsoft eine Lösung für O2 erstellt, die echt „Wow“ ist.
Was hat Surface mit Windows 7 gemeinsam?
Während der Entwicklung von Windows 7 hat man sehr eng mit dem Surface-Team zusammengearbeitet und dieses Know-How in das neue Betriebssystem einfliessen lassen. Das große Geheimnis von Surface ist eigentlich, dass das darunterliegende Betriebssystem „nur“ Windows Vista Business ist, angereichert mit einigen Kameras für die Erkennung der Finger, Hände oder sonstigen Eingabegeräte. Zusätzlich gibt es noch diverse Treiber für die Eingabe sowie Software, die die Oberfläche von Surface ausmacht. Diese Software ist, etwas einfach formuliert, nur WPF (Windows Presentation Foundation) mit speziellen Steuerelementen. Für den „normalen“ Entwickler heißt das, er kann eigentlich sofort für Surface programmieren. Die Entwicklungswerkzeuge sind die gleichen, wie für Silverlight und WPF, nämlich Expression Studio und/oder Visual Studio.
In Windows 7 ist die Möglichkeit eingeflossen, den Computer über den Bildschirm mit Hilfe von Fingern zu steuern. Es gibt bereits eine Vielzahl von Computern und Notebooks, die sich mit einem Finger steuern lassen. Darüber hinaus gibt es derzeit schon eine überschaubare Anzahl von Computern, die sich schon mit zwei oder mehreren Fingern gleichzeitig steuern lassen. Wieviele gleichzeitige Eingaben unterstützt werden, ist von der Display-Hardware und damit vom Hersteller direkt abhängig.
Was hat man unter Windows 7 von Multitouch?
Eine nette Anekdote zum Thema Multitouch: Die Steuerelemente auf der Taskleiste sind wesentlich größer geworden. Der Grund dafür liegt in der natürlichen Beschaffenheit von menschlichen Fingern. Haben SIe schon einmal probiert, die kleinen Symbole der Windows Vista- oder Windows XP-Oberfläche in der Taskleiste mit dem Finger präzise zu treffen? Selbst mit einem Stift (von Tablet PCs) ist das eher ein Geschicklichkeitsspiel als ein präzises Arbeiten. Jetzt lassen sich die neuen Steuerelemente auch einfach mit dem Finger treffen und steuern.
Anwendungen, die die Basisfunktionen aus dem Betriebssystem unterstützen, wie z.B. das Vergrößern und Verkleinern, sind bereits sehr gut für Mutlitouch ausgelegt. Durch das auseinanderziehen zweier Fingern kann man beliebige Dokumente, die diese Funktion unterstützen, vergrößern oder verkleinern. Hinzu kommt die Fähigkeit der Anwendungen, natürliches Feedback zu geben, gelangt man z.B. an das Ende eines Dokumentes, so „bounced“ dieses (Bouncen heißt so viel wie „kurz über das Ziel hinausfahren und wieder zurückzukommen“). Damit erhält der Benutzer tatsächlich das Gefühl von „Ich bin am Ende des Dokumentes angekommen“. Aber auch die Docking-Funktionen von Windows sind hervoragend auf Multitouch eingestellt: bewegt man ein Fenster mit dem Finger an eine Bildschirmseite, so dockt es dort automatisch an.
Eine andere Anekdote ist, dass sich die Open Source Gemeinde um einen Browser damit rühmt, jetzt auch Multitouch unter Windows 7 zu unterstützen. Leider haben die Kollegen nicht mitbekommen, dass das ein fester Bestandteil von Windows 7 ist und sofort „ohne Code“ von jeder Anwendung automatisch verwendet werden kann.
Es gibt bereits eine Vielzahl von Anwendungen, die Multitouch direkt verwenden. Microsoft selbst liefert ein Beispielpaket aus, das Multitouch Pack, das aus einigen Spielen, Visualisierungsdemonstrationen und Surface Globe besteht. So kann man mit dem Surface Globe sehr leicht die Welt mit den eigenen Fingern erkunden.
Anwender ohne ein Multitouch-fähiges Gerät müssen aber nicht zurückstecken, die Anwendungen lassen sich zumindest starten und größtenteils auch mit der Maus steuern, wenn auch nicht ganz so komfortabel.
Wie kann man nun eigene Multitouch-fähigen Anwendungen entwickeln?
Auf MSDN-Online gibt es dazu einen sehr guten Webcast.
In diesem Webcast zeigt Ihnen Dariusz Parys, wie Sie Anwendungen für Windows 7 multi-touch-fähig machen. Unter anderem erfahren Sie, wie man einen Emulator installiert, um Multi-Touch zu simulieren, welche Gesten standardmäßig in Windows 7 unterstützt werden und wie man eine WPF-Anwendung um Multi-Touch-Funktionalität erweitert.
Heute kommen die Fans des Windows Explorer voll auf ihre Kosten. Er verfügt im Prinzip über alle wichtigen Funktionen, die man für die Navigation durch Ordner, Netze, Dateien, Bibliotheken und Suchen benötigt. Der Windows Explorer ist das Ergebnis jahrelanger Entwicklungsarbeit und spiegelt dabei die Implementierung vieler Bedürfnisse des Standardbenutzers wieder. Wer dennoch Funktionen braucht, die nicht enthalten sind, oder diese gerne auf andere Art und Weise implementieren möchte, darf dies gerne tun.
Die Funktionen des Windows Explorer stehen jedem Entwickler frei zur Verfügung. Dank des Windows API Code Packs lässt sich der Explorer in Windows Forms- oder Windows Presentation Foundation-Anwendungen integrieren.
Die Funktionen und die Visualisierung steht in Form von Steuerelementen direkt in Visual Studio zur Verfügung. Der Name der Steuerelemente ist sowohl in Windows Forms als auch in WPF ExplorerBrowser.
Die Konfiguration ist ebenfalls sehr leicht über das Eigenschaften-Fenster möglich.
Zwei Referenzimplementierungen sind direkt im Windows API Code Pack enthalten. Sie demonstrieren einfach und kompakt die volle Leistungsfähigkeit und sehen dabei sehr technisch aus. Meine Bitte an Sie, bitte bauen sie so etwas nicht, sondern machen sie es dem Benutzer leicht. J
Die WPF-Variante zum Testen der ExplorerBrowser-Funktionen.
Ein altes Sprichwort sagt: „Wer suchet, der findet.“. Warum lassen wir nicht unsere eigenen Anwendungen suchen? Windows 7 liefert die notwendige Search API dafür mit.
Um die Search API aus .NET-Code ansprechen zu können, ist wirklich nicht viel nötig. Man muss lediglich das Windows API Code Pack einbinden und schon kann in wenigen Zeilen der eigene Suchclient entwickelt werden.
Was man sucht und vor allem wo man sucht, ist jedem Entwickler selbst überlassen. Die Qualität der Suche hängt aber wesentlich von diversen Kriterien ab: So ist es ziemlich sinnlos nach Liedern ihrer Lieblingsband im System-Ordner von Windows zu suchen. Und Bilder vom letzten Firmenfest werden sie nicht in ihren Musikordnern finden. Es sei denn, sie haben eine sehr interessanten Organisationsstil.
Aus gutem Grund bietet die API daher auch die nötigen Konfigurationswerkzeuge für die Suche an. In welchen Typen von Ordner soll gesucht werden? Was für Daten suchen wir? Sollen alle Suchbegriffe oder zumindest ein Suchbegriff im Dokument gefunden werden? Handelt es sich um aktuelle Daten oder vor langer Zeit angelegte Dokumente?
Eine eigene Suchanwendung ist sehr schnell implementiert. Dafür sind lediglich zwei Bibliotheken aus dem Windows API Code Pack notwendig:
// Erzeuge einen ShellSearchFolder ShellSearchFolder searchFolder; if (ShellLibrary.IsPlatformSupported) { searchFolder = new ShellSearchFolder( finalSearchCondition, (ShellContainer)KnownFolders.DocumentsLibrary, (ShellContainer)KnownFolders.PicturesLibrary, (ShellContainer)KnownFolders.VideosLibrary); } else { searchFolder = new ShellSearchFolder( finalSearchCondition, (ShellContainer)KnownFolders.Documents, (ShellContainer)KnownFolders.Pictures, (ShellContainer)KnownFolders.Videos); }
// DataList die die Ergebnisse anzeigt _result.ItemsSource = searchFolder; }
Die Methode GetSearchCondition ist folgendermaßen implementiert:
private SearchCondition GetSearchCondition(string searchText) { // Einzelne Suchbegriffe aus dem Textbilden string[] words = searchText.Split(’ ‘); // Das Suchergebnis ist erstmal leer SearchCondition combinedPropertyCondition = null; // Für jedes Word im Suchtext eine Suchbedingung erzeugen foreach (string word in words) { // Erste Suchbedingung –> Suche nach Dateinamen SearchCondition propertyCondition1 = SearchConditionFactory.CreateLeafCondition( SystemProperties.System.FileName, word, SearchConditionOperation.ValueContains); // Zweite Suchbedingung –> Suche nache Keywords/Tags in Datei SearchCondition propertyCondition2 = SearchConditionFactory.CreateLeafCondition( SystemProperties.System.Keywords, word, SearchConditionOperation.ValueContains); // Wir wollen eine Oder-Bedingung für Tags oder Dateiname SearchCondition tmpCombinedCondition = SearchConditionFactory.CreateAndOrCondition( SearchConditionType.Or, false, propertyCondition1, propertyCondition2);
// Falls es bereits eine Suchbedingung gibt,
// verknüpfe die neue und die alten mit AND if (combinedPropertyCondition != null) { combinedPropertyCondition = SearchConditionFactory.CreateAndOrCondition( SearchConditionType.And, false, combinedPropertyCondition, tmpCombinedCondition); } else { combinedPropertyCondition = tmpCombinedCondition; } } return combinedPropertyCondition; }
Die Suche an sich wird über die Klasse ShellSearchFolder ausgeführt. Die Definition der Suchanfrage erfolgt über die SearchConditions. Welche Ordner durchsucht werden sollen, wird mit Hilfe von „KnownFolders“, so genannten bekannten Ordner definiert.
searchFolder = new ShellSearchFolder( finalSearchCondition, (ShellContainer)KnownFolders.DocumentsLibrary, (ShellContainer)KnownFolders.PicturesLibrary, (ShellContainer)KnownFolders.VideosLibrary);
Das Suchergebnis kann man nun visualisieren wie man möchte. Ich habe mich in diesem Beispiel auf eine einfache Liste beschränkt. Im Windows API Code Pack steht dazu eine vollwertige WPF-Visualisierung zur Verfügung.
Meine Programme stürzen nicht ab! Nein ganz bestimmt nicht! Versprochen! Großes Indianer-Ehrenwort!
Aber falls es doch mal passiert, dass eine Anwendung „abstürzt“, bzw. einfach nicht das tut, was man von ihr erwartet, dann kann man das jetzt stilvoll und mit einem automatischen Neustart der Anwendung geschehen lassen. Hierbei hilft die Restart-And-Recovery-API, die bereits in Windows Vista eingeführt und nun in Windows 7 erweitert wurde.
Jeder von uns war bestimmt schon einmal in der Situation, dass er lange an einem Dokument gearbeitet hat bis die Anwendung plötzlich einfach abgestürzt ist. Die Anwendung reagiert einfach nicht mehr und alle Daten sind verloren. Vielleicht haben sie es auch schon einmal gesehen, dass einige Anwendungen nach einem Absturz anbieten, direkt wieder neu zu starten. Und im Startvorgang werden dann die verloren geglaubten Daten wiederhergestellt. Benutzer solcher Anwendungen können sich glücklich schätzen.
Die Anwendung läuft noch ….
Ups, die Anwendung funktioniert nicht mehr.
Und startet sich von selbst neu.
Eine quasi sich selbst regenerierende Anwendung kann jeder mit Hilfe der Restart-And-Recovery-API erstellen. Es sind nur wenige Schritte dazu notwendig:
Schritt 1: Registrieren der Anwendung für einen Restart
Schritt 4: Prüfen, ob der Benutzer den Restart abgebrochen hat
private void PingSystem() { // Find out if the user canceled recovery. bool isCanceled = ApplicationRestartRecoveryManager.ApplicationRecoveryInProgress();
if (isCanceled) { Console.WriteLine("Recovery has been canceled by user."); Environment.Exit(2); } }
Schritt 5: Daten beim Neustart wiederherstellen
private void RecoverLastSession(string command) { if (!File.Exists(RecoveryFile)) { MessageBox.Show(this, string.Format("Recovery file {0} does not exist", RecoveryFile)); internalLoad = true; textBox1.Text = "Could not recover the data. Recovery data file does not exist"; internalLoad = false; UpdateAppTitle(); return; }
Die Windows 7 Sensor API ist eine neue Programmierschnittstelle für die Steuerung von Sensoren. Bei Sensoren kann es sich um interne und externe Erweiterungen des PCs handeln, die dem Computer Informationen über „äußere“ Zustände vermitteln. Die häufigsten Einsatzszenarien sind derzeit die Erkennung der Umgebungshelligkeit, der Beschleunigung des PCs selbst oder des angeschlossenen Sensors. Darüber hinaus kann man Software-Sensoren erstellen, die bestimmte Werte ermitteln und an die API übergeben und damit unseren Anwendungen bereitstellen.
Was kann man tun, wenn man keine Sensoren installiert hat?
Man muss sich nicht unbedingt einen neuen Rechner mit Sensorhardware kaufen, denn es gibt durchaus Alternativen. Das Windows 7 SDK bringt zum Beispiel einen Sensor für Licht mit. Es handelt es sich um einen Lichtsensor-Emulator, den der User über einen einfachen Schieberegler steuern kann.
Um den Treiber dafür erfolgreich im System zu installieren, muss man wie folgt vorgehen:
Eine Kommandozeile mit administrativen Rechten starten (cmd.exe mit „Run as“-Option)
Wechseln in den Windows SDK Bin-Ordner
Eingabe von pnputil -a VirtualLightSensorDriver.inf
Bei einer Nachfrage, ob der Treiber wirklich installiert werden soll, mit Ja antworten
Warten bis die Meldung erscheint, dass der Treiber erfolgreich installiert wurde
Ausführen des virtuellen Lichtsensors
Starten der Anwendung “VirtualLightSensor.exe” aus dem Windows SDK Bin-Ordner
Bestätigen, dass der Sensor gestartet werden soll
Einen Moment lang wird die Meldung „Waiting“ angezeigt. Der virtuelle Lichtssensor wird in diesem Moment als „Gerät“ installiert. Anschließend kann der Schieberegler verwendet werden, um die Lichtstärke in Lux zu simulieren
Programmieren mit Sensor API
Die Funktionen, um auf die Sensoren im Computer zugreifen zu können, sind über die SensorManager-Klasse erreichbar. Sie ist Bestandteil des Windows API Code Pack und kann über die darin enthaltene Bibliothek „Sensors“ eingebunden werden.
Um generell erkennen zu können, ob sich an den Sensoren etwas ändert (Aktivierung und Deaktivierung), reicht das Ereignis SensorsChanged. Um zu erkennen, welche Sensoren im System enthalten sind, kann die Methode GetAllSensors verwendet werden. Diese liefert alle Sensoren zurück, die im System derzeit aktiv sind. Jedes zurückgelieferte Objekt ist von der Klasse Sensor abgeleitet.
private void InitSensors() { SensorManager.SensorsChanged += new SensorsChangedEventHandler(SensorManager_SensorsChanged);
foreach (var sensor in SensorManager.GetAllSensors()) { sensor.DataReportChanged += new DataReportChangedEventHandler(sensor_DataReportChanged); sensor.StateChanged += new StateChangedEventHandler(sensor_StateChanged); Debug.WriteLine(sensor.FriendlyName); } }
Um mit einem Lichtsensor zu arbeiten, kann man den AmbientLightSensor verwenden. Dieser verfügt über die Eigenschaft CurrentLuminousIntensity, welche die Intensität in Lux zurückliefert. Darüber kann erkannt werden, ob das aktuelle Umgebungslicht hell oder dunkel ist. Das macht besonders dann Sinn, wenn man in wechselnden Umgebungen arbeitet, wie z.B. im ICE (Tunnel, Sonnenlicht, Bahnhof, usw.). Einige Notebookhersteller haben dafür schon Sensoren im Rechner eingebaut und regeln so die Helligkeit des Bildschirms.
SensorList<AmbientLightSensor> alsList = SensorManager.GetSensorsByTypeId<AmbientLightSensor>( ); int ambientLightSensors = 0;
foreach( AmbientLightSensor sensor in alsList ) { // set intial progress bar value sensor.TryUpdateData( ); float current = sensor.CurrentLuminousIntensity.Intensity; pb.Value = Math.Min( (int)current, maxIntensity );
// Set up automatc data report handling. sensor.AutoUpdateDataReport = true; sensor.DataReportChanged += new DataReportChangedEventHandler( DataReportChanged ); ambientLightSensors++; }
if( ambientLightSensors == 0 ) { // No Sensor found } } catch( SensorPlatformException exc) { // This exception will also be hit in the Shown message handler. }
Das Ereignis DataReportChanged wird immer dann ausgelöst, wenn sich am Sensor etwas verändert. Das geschieht asynchron als Hintergrundprozess und muss daher bei Interaktion mit dem UI-Thread wieder mit diesem synchronisiert werden. Die Umsetzung lässt sich sehr einfach mit der folgenden Ereignisbehandlung realisieren:
void DataReportChanged( Sensor sender, EventArgs e ) { AmbientLightSensor als = sender as AmbientLightSensor; BeginInvoke( new MethodInvoker( delegate { float current = als.CurrentLuminousIntensity.Intensity; } ) ); }
Arbeiten mit Bewegungs- bzw. Beschleunigungssensoren
Inzwischen gibt es auch immer mehr Hardware mit so genannten Bewegungssensoren. Diese erkennen Beschleunigung in den drei Bewegungsachsen. Dadurch ergeben sich ganz neue Möglichkeiten der Steuerung.
Ich selbst habe ein externes Sensorboard der Firma Freescale zu Testzwecken an meinem Rechner. Damit verfügt man quasi über einen Joystick, der eine dreidimensionale Steuerung erlaubt.
Um diesen Sensor anzusprechen, benötigt nicht viel mehr Code als für Lichtsensoren.
Das Auslesen der Daten geschieht ebenfalls im DataReportChanged-Ereignis der SensorManager-Klasse:
void sensor_DataReportChanged(Sensor sender, EventArgs e) { Debug.WriteLine(sender.FriendlyName); if (sender is Accelerometer3D) { Dispatcher.BeginInvoke(new Action(delegate { Accelerometer3D accel = sender as Accelerometer3D; MoveBall(accel.CurrentAcceleration[AccelerationAxis.X], accel.CurrentAcceleration[AccelerationAxis.Y], accel.CurrentAcceleration[AccelerationAxis.Z]); })); } }
Die Methode MoveBall macht nichts anderes als einen Ball um die übergebenen X-,Y- und Z-Koordinaten zu verschieben.
Ein schönes Beispiel ist im Windows API Code Pack enthalten. Dieses visualisiert die aktuelle Beschleunigung des Sensors in X-,Y- und Z-Richtung.
Die Multifunktionsleiste wurde neu in Windows 7 integriert und entspricht nahezu der Multifunktionsleiste von Office 2007. Nahezu bedeutet dabei, dass sie konsequent weiterentwickelt wurde.
Windows 7 und die Multifunktionsleiste
Die Multifunktionsleiste ist in einige Klassiker eingeflossen: Paint und WordPad. Schade ist, dass sie es nicht auch in Notepad geschafft hat.
Die Multifunktionsleiste ist ebenso in Windows Live Movie Maker integriert worden. Dieser läuft auch unter Windows Vista und zeigt, dass die Multifunktionsleiste auch auf Vista verfügbar sein wird.
Entwickeln mit der Multifunktionsleiste
Windows 7 führt ein neues natives API für Multifunktionsleisten-basierte Oberflächen ein. Dieses API ist COM-basiert. Das API wird in Zukunft auch für Windows Vista verfügbar sein und nahezu den gleichen Funktionsumfang wie die Office 2007-Multifunktionsleiste haben.
Um als Entwickler die Multifunktionsleiste verwenden zu können, benötigt man das Windows 7 SDK (Link). Im SDK finden Sie unter anderem die Header-Datei (UIRibbon.h), die den Zugriff auf die Multifunktionsleiste bietet.
Die Programmierung der Multifunktionsleiste teilt sich in zwei Bereiche auf: Im Deklarationsteil werden die verschiedenen Elemente, wie z.B. Tabreiter, Gruppierungen oder Kommandos, deklariert und ihr Aussehen beschrieben. Diese Beschreibung kann mit XAML (Extensible Markup Language) geschrieben werden. Die Ausführung der Kommandos und das Wechseln in verschiedene Zustände wird über C++-Code beschrieben, der die Darstellung mit der Anwendungslogik verknüpft, der eigentlichen Anwendungslogik.
Dadurch erhält man eine starke Separation in Model, Sicht und Controller, die den Code und das Markup entkoppelt. Die gesamte C++-API dazu ist sehr kompakt gehalten. Sie ist auf Kommandos fokussiert und nicht auf Steuerelemente oder Darstellungsdetails.
Welche Steuerelemente bringt die Multifunktionsleiste mit
Die Multifunktionsleiste verfügt über ein sehr großes Repertoire an Steuerelementen, die wir bereits aus Paint, WordPad und dem Windows Live Movie Maker her kennen.
Eine Funktion die nicht direkt in der Multifunktionsleiste integriert ist, sondern an beliebigen Stellen in der Anwendung verwendet werden kann, ist das erweiterte Kontextmenü. In WordPad erscheint dies leicht transparent, wenn man einen Text markiert. Darüber kann man dann zum Beispiel den selektierten Text formatieren. Diese Funktion erspart dem Benutzer, größere Strecken mit der Maus zurückzulegen und somit seinen aktuellen Fokus (den Text) zu verlassen.
Markup der Multifunktionsleiste
Der Markup-Code für die Multifunktionsleiste unterteilt sich in zwei Bereiche: Command-Sektion und Views-Sektion.
Die Command-Sektion beinhaltet die einzelnen Command-Elemente: einen Referenznamen, ein Label, eine eindeutige ID, ein Bild (BMP) und einen Tooltip.
Die Views-Sektion legt die Organisation der Kommandos in Tabs, Gruppen, Quick Access-Toolbar und Anwendungsmenü fest. Sie bestimmt außerdem, welches Steuerelement für welches Kommando verantwortlich ist.
Die Multifunktionsleiste unterstützt zwei Arten von “Sichten”: die Multifunktionsleisten-Sicht und die kontextuelle UI-Sicht. Die kontextuelle UI-Sicht bietet ein reicheres Kontextsystem als bisherige Kontextmenüs.
Da es sich bei der Multifunktionsleiste um eine native API handelt, muss aus der XAML-Datei erst einmal eine native Ressource erstellt werden. Dies geschieht mit einem Tool aus dem Windows SDK: UICC.exe. Dieses generiert aus der XAML-Datei eine Ressource, die man wiederum in seine Anwendung einbinden kann und dadurch die Multifunktionsleiste als nativen Code vorliegen hat.
UICC.exe konvertiert XAML in ein binäroptimiertes Format und erstellt eine .rc-Datei, welche den binären “blob” mit den verwendeten Ressourcen enthält. Man sollte einen benutzerdefinierten Build-Step für die Erstellung der .rc-Datei mittels UICC.exe in sein Projekt einbauen, damit dieses automatisch während des Erstellens geschieht. Eine .h-Datei, die die #defines für die diversen Command-IDs enthält, wird ebenfalls generiert.
Anwendungsmodi
Durch Anwendugsmodi lässt sich die Darstellung von Elementen an den aktuellen Anwendungszustand koppeln, denn nicht immer soll alles sichtbar sein. In Microsoft Paint wird z.B. der Text-Tab nur angezeigt wenn man Text bearbeitet. Ansonsten wird diese Funktion nicht benötigt. Im Markup-Code definiert man die Anwendungsmodi, in denen die Elemente sichtbar sein sollen. Der Anwendungsmodus wird auf untergeordnete Steuerelemente automatisch vererbt.
class CApplication : public CComObjectRootEx<CComMultiThreadModel>, public IUIApplication, public IUICommandHandler { public: BEGIN_COM_MAP(CApplication) COM_INTERFACE_ENTRY(IUIApplication) COM_INTERFACE_ENTRY(IUICommandHandler) END_COM_MAP()
Die Taskleiste in Windows 7 hat eine lange Geschichte hinter sich.
Geschichte der Taskleiste
In Windows 1 gab es die Taskleiste noch nicht, es gab lediglich einfache Symbole am unteren Rand. Man konnte die Symbole noch nicht einmal verschieben. Aber der Kenner weiß, dass bereits in dieser Version das „Docking“ der Fenster von Microsoft erfunden wurde. Dieses Feature ist zwar in folgenden Versionen verschwunden, aber in Windows 7 „wieder auferstanden“.
In Windows 2.x konnte man Anwendungen mit Hilfe des Program Managers starten. Man hangelte sich dabei durch verschiedene Fenster, die innerhalb des Program Managers geöffnet und geschlossen werden konnten. Um schneller auf Anwendungen zugreifen zu können, konnte man bereits „Shortcuts“ auf den Desktop legen.
In Windows 95 hielt die Taskleiste und der Start-Knopf Einzug. Erstmals wurden ausgeführte Anwendungen als Symbole in der Taskleiste angezeigt und konnten darüber hinaus minimiert, maximiert und geschlossen werden. Darin hat sich bis zum heutigen Tage auch wenig verändert.
In Windows XP wurde die komplette Taskleiste in ein neues Design überführt.
Mit Windows Vista kam zum ersten Mal die Möglichkeit auf, innerhalb des Startmenüs nach Programmen und Funktionen zu suchen bzw. die Suche über den gesamten Computer zu starten. Dieses Feature wurde auch nötig, da die Programmflut im Startmenü dank vieler Zeitschriften mit CD-Beilagen ins Unermessliche gestiegen war
In Windows 7 wurde Taskleiste visuell sehr „vereinfacht“ und mit vielen neuen Funktionen erweitert. Gestartete Programme werden in der gleichen Leiste angezeigt wie Verknüpfungen. Lediglich das Aussehen unterscheidet nun zwischen den verschiedenen Status der Anwendung.
Bei diversen Benutzerumfragen wurden folgende Fakten festgestellt:
Mehr als 90 % aller Benutzersitzungen haben weniger als 15 gleichzeitig geöffnete Fenster.
Mehr als 70 % aller Sessions haben weniger als 10 Fenster gleichzeitig geöffnet.
Nicht-Standard-Optionen wurden nur von max. 10 % aller Benutzer überhaupt verwendet.
Die Ziele für die Entwicklung der neuen Taskleiste sind daher wie folgt definiert worden:
Eine Startoberfläche für alle Anwendungen und Ziele
Die am meisten benutzten Elemente sollen auf „Fingertipp“ bereitstehen
Einfach kontrollier- und verwaltbar mit einfachsten Mitteln
Sauber, störungsfrei und einfach
Terminologie und Funktionen der neuen Taskleiste
Taskleisten-Schaltflächen Jede Anwendung, jedes Ziel und jede Verknüpfung wird durch ein Symbol auf der Taskleiste dargestellt. Gestartete bzw. geöffnete Anwendungen und Ziele werden als Schaltfläche dargestellt. Sind mehrere Instanzen ein und derselben Anwendungen geöffnet, werden diese kaskadierend dargestellt. Dies kann aber über die Eigenschaften der Taskleiste nach eigenen Wünschen verändert werden.
Die Schaltflächen lassen sich sehr vielseitig anpassen. Folgende Möglichkeiten hat der Benutzer:
Änderung der Darstellung durch Overlays
Darstellung mehrfarbiger Fortschrittsbalken
Ändern des Hintergrunds
Damit hat man die Möglichkeit den Status der Anwendung innerhalb der Startleiste zu visualisieren. Folgende Szenarien wären denkbar: Läuft die Anwendung, behält sie das normale Symbol. Muss der User eine Interaktion durchführen, lässt man das Symbol pulsieren, liegt ein Problem vor, zeigt man zum Beispiel ein rotes Kreuz an.
Sprunglisten, Ziele und Aufgaben Jedes Symbol in der Taskleiste hat eine so genannte Sprungliste. Innerhalb dieser Sprungliste gibt es Elemente die jede Anwendung besitzt: Öffnen, Alle Fenster schließen und an die Taskleiste heften bzw. von dieser entfernen. Darüber hinaus kann eine Sprungliste noch zusätzliche Dinge anzeigen. Ist eine Anwendung z.B. mit einem bestimmten Dateityp assoziiert, wie z.B. Word mit Doc-Dateien, dann werden diese automatisch unter „Zuletzt verwendet“ in der Sprungliste angezeigt. Möchte man dort vielleicht ein Dokument immer wieder öffnen, so kann man dies „anheften“. Dadurch steht es solange in dieser Liste, bis man es wieder entfernt. Diese Funktionen stehen jeder Anwendung sofort aus dem Stand zur Verfügung, ohne dass dazu Code notwendig ist. Zusätzlich lassen sich innerhalb der Sprungliste aber auch noch Aufgaben integrieren. Das können beliebige Tätigkeiten sein. Der Windows Live Messenger macht es vor und bietet die folgenden Aufgaben an: MSN Startseite anzeigen, Postfach öffnen, Sofortnachricht senden, Online, Offline, Abwesend, usw. Das neue Outlook 2010 bietet ähnliche Funktionalitäten, so kann man über die Sprungliste sofort eine Email erstellen, einen Termin planen, direkt den Kalender aufrufen, u.v.m. Wenn man dieses Feature einmal verwendet hat, möchte man es nicht mehr missen.
Thumbnail-Toolbars Ein weiteres neues Feature sind die Thumbnail-Toolbars. Als gutes Beispiel geht der Windows Media Player voran. Geht man mit der Maus über das Symbol des laufenden Mediaplayers, sieht man das aktuelle Video oder Musikcover und zusätzlich die Möglichkeit den Player zu starten, ein Element zurück- oder eines vorzuspringen. Dadurch lässt sich der Player direkt aus der Startleiste steuern, ohne dass man ihn erst einmal in den Vordergrund holen muss.
Auch die Darstellung der Vorschau in der Taskleiste ist individuell anpassbar. Man hat in der Startleiste und deren Vorschau ja nicht beliebig viel Platz. Daher kann man die Darstellung in der Vorschau nach eigenen Wünschen gestalten und nur das Wesentliche anzeigen lassen.
Verwendung von Managed Code
Die einfachste Art und Weise, um auf die Funktionen der Taskleiste zuzugreifen ist das Windows API Code Pack (http://code.msdn.microsoft.com/WindowsAPICodePack). Dieses wurde bereits vor einigen Tagen vorgestellt. Bindet man dieses in sein eigenes Projekt ein, kann man direkt auf die Funktionen der Taskleiste zugreifen.
Um beispielsweise ein Overlay-Symbol über dem Anwendungssymbol einzublenden, ist der folgende Code notwendig.
Bei den Sprunglisten handelt es sich um eine neue Funktionalität, die es ermöglicht, dem Anwendungssymbol zusätzliche Funktionen hinzuzufügen. Einfach auf dem Symbol die rechte Maustaste drücken und schon erscheint die Sprungliste. Standardmäßig sind die Funktionen zum Öffnen, Schließen und Anheften enthalten. Wenn die Anwendung die Funktionen „Zuletzt verwendete Dokumente“ und „Häufig verwendete Dokumente“ unterstützt, so werden diese Dokumente ebenfalls direkt in der Sprungliste angezeigt. Diese Liste der Dokumente kann für eigene Anwendungen sehr leicht angepasst werden.
Für einen einfachen Zugriff empfiehlt sich die Verwendung des Windows API Code Pack (Link kommt hier rein). Verwendet man diese Bibliothek, dann lässt sich die Liste der Dokumente über die folgenden Zeilen Code steuern:
private JumpListCustomCategory category1 = new JumpListCustomCategory("Custom Category 1");
Möchte man eine eigene Aufgabe zur Taskleiste hinzufügen, die dafür sorgt, dass ein bestimmtes Programm geöffnet wird, so geht dies mit den folgenden Zeilen Code.
// Path to Windows system folder string systemFolder = Environment.GetFolderPath(Environment.SpecialFolder.System);
Wer gerne Schnellzugriff auf frei konfigurierbare Tools haben möchte, dem kann ich den Jumplist-Launcher empfehlen. Ein kostenfreies Tool, das es hier (Link: http://www.ali.dj/jumplist-launcher/) gibt. Damit lassen sich bis zu 60 Programme frei in der Jumplist konfigurieren.
Das Windows API Code Pack for Microsoft .NET Framework ist eine .NET-Bibliothek für die Nutzung einiger der neuen Windows 7-Features sowie Funktionen aus älteren Betriebssystemen. Diese Bibliothek beinhaltet Funktionen, die so heute noch in keinem .NET Framework enthalten sind. Die nächste Version des .NET Framework wird große Teile dieser Bibliothek übernehmen, allerdings dauert das noch eine Weile. Leider kann aber wegen des Open Source-Charakters momentan keine hundertprozentige Gewährleistung gegeben werden, dass die Bibliotheken im .NET Framework genauso aussehen werden, wie im Code Pack.
Das tolle an diesen Bibliotheken ist, dass sie im Quellcode vorliegen und so von jedem erweitert werden können. Dadurch erhält man die Sicherheit, dass die eigenen Anwendungen auch noch mit späteren Versionen des .NET Framework funktionieren werden.
Das Code Pack gibt es derzeit in der Version 1 und enthält die folgenden Bestandteile:
Windows 7 Taskbar Sprunglisten, Symboloverlays, Fortschrittsbalken, Tabbed Thumbnails und Thumbnail Toolbars.
Windows 7-Bibliotheken, bekannte Ordner, Nicht-Filesystem-Container.
Windows Shell Search API Support, eine Vielzahl von Shell-Funktionen inkl. Drag und Drop für Shell-Objekte (z.B. Dateien).
Explorer Browser Control.
Shell-Eigenschaften.
Windows Vista- und Windows 7-Dateidialoge, einschließlich benutzerdefinierter Steuerelemente.
Windows Vista und Windows 7 Task-Dialoge.
Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) APIs. (DirectWrite und WIC sind derzeit nur teilweise unterstützt)
Sensor Platform APIs
Extended Linguistic Services APIs
Power Management APIs
Application Restart and Recovery APIs
Network List Manager APIs
Command Link Steuerelement und System-Symbole.
Shell Search API support.
Support für Direct3D- und Direct2D-Interoperabilität.
Support von Typographie und Schriftarten für DirectWrite APIs.
Die Anforderungen des Code Pack
.NET Framework 3.5 SP1 Ist mindestens erforderlich
Diese Bibliothek adressiert Windows 7 RTM (bereits verfügbar für alle MSDN Subscriber), einige Features funktionieren allerdings auch auf älteren Windows Betriebssystemen.
DirectX Features benötigen das Windows SDK für Windows 7 RTM. Zusätzlich benötigen einige Direct3D-Beispiele das DirectX SDK (Version August 2009).
Erstellen und Verwenden der Bibliothek
Um die Bibliothek zu erstellen (ausgenommen die DirectX betreffenden Features), benötigt man Visual Studio 2008. Der gesamte Inhalt des Pakets „WindowsAPICodePack.zip“ sollte dafür in einen neuen Ordner entpackt werden. Darin enthalten ist die Datei „WindowsAPICodePack.sln“, die die gesamte Lösung beinhaltet.
Für das Erstellen der DirectX-Features wird“DirectX.sln“ innerhalb des DirectX-Verzeichnisses benötigt. Eine genauere Beschreibung der Anforderungen ist in der einer Hilfedatei im selben Ordner beschrieben
Welche Beispiele sind im Code Pack enthalten?
Das Code Pack beinhaltet neben den Bibliotheken auch einige Beispielanwendungen, die sofort lauffähig sind, um die Verwendung erfolgreich zu demonstrieren. Jedes Beispiel ist sowohl in C# also auch in Visual Basic .NET verfügbar.
Konkret enthalten sind Beispiele für Explorer-, Netzwerk-, Ribbon-, Startleiste-, Sensor- und Dialog-Bibliotheken.
Auch im aktuellen Jahr werden wir wieder die beliebten Windows 7 Workshops für Softwarehersteller anbieten. Mit einer frischen Agenda ist der Schwerpunkt ein wenig mehr Richtung Entwickler verschoben worden. Themen, die in der neuen Veranstaltungserie behandelt werden sind:Windows 7 Anwendungskompatibilität, Windows 7 Logo, Benutzerkontensteuerung, Windows Error Reporting, High DPI, neue Features in Windows 7 und .NET 4.0 im Zusammenspiel mit Windows 7.
Die Veranstaltungen beginnen um 10 Uhr, enden ca. gegen 17 Uhr und sind kostenfrei. Ihre Anmeldungen schicken Sie bitte einfach an unsere E-Mail-Adresse fitmit7@microsoft.com. Weitere Informationen zu dieser Veranstaltungsserie finden Sie auch im Blog Softwarehersteller in Deutschland.
Alle Jahre wieder treibt der Weihnachtsmann auch bei MSDN sein Unwesen und lädt Entwickler zu einem besinnlichen Online-Live-Meeting ein. Seine Vertreter auf Erden, Bernd Marquardt und Neno Loje, werfen dabei wie immer einen Blick zurück auf einige Technologie-Highlights des abgelaufenen Jahres und auf solche, derer wir noch gemeinsam harren. Und nebenher veranstalten die beiden Experten der „XMAS Presentation Foundation“ natürlich auch diesmal wieder das schon legendäre Weihnachts-Gewinnspiel, bei dem Sie als Teilnehmer live Fragen beantworten und gleich etwas gewinnen können. Verlost werden professionelle Software, viele Bücher und allerlei andere nützliche Pretiosen, die den Entwickleralltag leichter machen. Was genau, wird noch nicht verraten, aber wie spricht schon der Volksmund: „Der Weihnachtsmann sagt ‚Ho, Ho, Ho‘, ich bring‘ Euch Visual …“ (Basic?, C#?)
Windows Azure ist das neue Cloud Computing-Angebot von Microsoft, mit dem Unternehmen, IT-Dienstleister, Softwarehersteller und Entwickler Websites, Webanwendungen und Webdienste sowie Speicherplatz sehr einfach, hoch verfügbar und skalierbar in Microsoft Rechenzentren bereitstellen können. Windows Azure entlastet Sie dabei von jeglichen Administrationsarbeiten.
Windows Azure zeichnet sich durch Kosteneffizienz, eine sehr hohe Verfügbarkeit und Skalierbarkeit über mehrere Server sowie über eine extrem einfache Bereitstellung und ein automatisches Management von IT-Lösungen aus.
Weihnachten steht vor der Tür und passend dazu gibt es frohe Kunde: Die xtopia[kompakt] Roadshow geht in die nächste Runde!
Nach dem sensationellen Erfolg in diesem Jahr touren wir auch im kommenden Frühjahr durch Deutschland und geben Euch die Gelegenheit ein Feuerwerk an Innovationen im Bereich Web, User Experience und RIA zu erleben. Und das Alles kostenlos!
Wann und Wo? – Termine und Locations
Die Roadshow macht in sechs Städten in Deutschland halt. Beginn ist 17 Uhr, Ende der Veranstaltung ist gegen 22 Uhr.
Montag, 19.04.2010: Hilton München Park, München
Dienstag, 20.04.2010: Best Western, Karlsruhe
Mittwoch, 21.04.2010: Maritim, Bad Homburg
Montag, 26.04.2010: Leonardo Hotel, Köln
Dienstag, 27.04.2010: Baseler Hof, Hamburg
Mittwoch, 28.04.2010: Mövenpick, Berlin
Was erwartet Euch?
Neben interessanten Vorträgen von Microsoft Sprechern zu neuen Technologien und Innovationen werden wieder verschiedene namhafte Agenturen das Thema Web-und Interface Design und User Experience aus der Praxis vorstellen. Außerdem werden bekannte Unternehmen über die Verwendung von Interface-Design Werkzeugen sprechen.
In den Pausen und im Anschluss an die Veranstaltung gibt es natürlich Gelegenheit sich untereinander auszutauschen und in entspannter Atmosphäre neue Kontakte zu schließen.
Anmeldung
Ab Mitte Januar könnt ihr euch für dieses kostenlose Event-Highlight registrieren. Alle Infos sowie Neuigkeiten zu Sprechern und Agenda findet Ihr wie immer hier im Blog!
Ein Rückblick
Damit alle, die letztes Jahr nicht dabei waren, einen Eindruck von der xtopia [kompakt] Roadshow bekommen hier ein Themenüberblick der diesjährigen Veranstaltung:
UX@Microsoft: Was kommt denn da um die Ecke? User Experience Evangelist Clemens Lutsch nimmt Sie auf eine Reise in die neuen User Experience-Welten von Windows 7 mit, natürlich mit einem Abstecher in die faszinierende Welt von Surface Computing und Multitouch. Und er beantwortet die Frage ob und wie man seinen Computer anbrüllen kann (und sollte!), damit dieser zukünftig vernünftig darauf reagiert. Referent: Clemens Lutsch, Microsoft Deutschland GmbH, http://blogs.msdn.com/clemenslutsch
Das deutsche RIA Forum Im deutschen RIA Forum diskutieren über 2.500 Mitglieder das Thema Rich Internet Applications in allen Anwendungsbereichen und über alle Plattformen hinweg. Kompetent und neutral bietet das Forum einen hervorragenden Anlaufpunkt zur Diskussion der Vorteile der Technologien, der Business Values, zur Firmenvorstellung sowie auch als Jobbörse rund um Rich Internet Applications, Webdesign und Webentwicklung. Referent: Raju Bitter, Deutsches RIA Forum http://www.xing.com/net/ria
Barrierefreies Webdesign mit Expression Web 2 und kostenlosen Profivorlagen Expression Web 2 verfügt über umfangreiche Methoden zur Gestaltung von barrierefreien Websites – CSS-Profi Vladimir Simovic hat in Zusammenarbeit mit Microsoft Deutschland eigens für Expression Web 2 eine Sammlung kostenloser Vorlagen für Expression Web 2 entwickelt, mit denen auch Nicht-Profis Websites gestalten können, die sich durch gute Unterstützung wichtiger Funktionen für den barrierefreien Zugriff auszeichnen, damit Ihre Website wirklich für jedermann zugänglich ist. Referent: Vladimir Simovic, perun.net webwork GmbH http://www.perun.net
Internet Explorer 8 – Die neuen Features und was sie für Webentwickler bedeuten Referent: Oliver Scheer Microsoft Deutschland GmbH, http://blogs.msdn.com/olivers
Mit Microsoft Silverlight Next Generation Rich Internet Applications entwickeln Silverlight ist ein schlankes Browser-Plug-In für Rich Internet Applications (RIAs) für alle gängigen Betriebssysteme, alle gängigen Browser, und für Devices/mobile Geräte. Referent: Oliver Scheer Microsoft Deutschland GmbH http://www.microsoft.de/silverlight
Medienübergreifendes Design – Layouts direkt aus QuarkXPress ins Web mit Silverlight Referent: Matthias Günther, Quark http://8.quark.com/de
Silverlight als plattformübergreifendes Frontend für Unternehmensanwendungen – ein unabhängiger Praxisbericht Referent: Ludwig Neer CAS Software AG http://www.cas.de
Holen Sie mehr aus Ihrer Webseite heraus mit der Windows Live API für Webdesigner- und entwickler Referent: Frank Maenz Microsoft Deutschland GmbH http://messenger.live.de/webservices
So sieht die Wirklichkeit aus: Silverlight und WPF in der Praxis Silverlight und WPF sind die neuen Technologien von Microsoft um faszinierende Online- und Offlineerlebnisse zu gestalten. Von der platformübergreifenden Webanwendung über HD-Videowelten bis hin zu intuitiven Benutzeroberflächen für Desktop-Anwendungen. In dieser Session berichten führende Agenturen aus der deutschen Designszene frei und unzensiert über ihre Erfahrungen mit Silverlight und WPF. Zugesagt haben bereits Ergosign (Karlsruhe), maximago (Hamburg) und Pixelpark AG (Köln), UID (München) und Syzygy (Frankfurt). Moderation: Clemens Lutsch, Microsoft Deutschland GmbH http://www.ergosign.de, http://www.pixelpark.de, http://www.syzygy.de, http://www.uid.com, http://www.maximago.de
Sehen heißt verstehen! Wie Webdesigner und Webentwickler mit Microsoft Visio die Planung, Entwicklung und Pflege von Websites und Webanwendungen vereinfachen und das Reporting und die Überwachung der Server und Zugriffe nahezu in Echtzeit visualisieren können. Referent: Florian Müller Microsoft Deutschland GmbH http://www.sehen-heisst-verstehen.de
Mit den neuen Funktionen von Visual Studio 2010 können Unternehmen ihre Anwendungen effizient und komfortabel testen; das schließt Windows-Anwendungen inklusive Windows® 7 ein, sowie Webanwendungen und .NET Framework-basierte Anwendungen inklusive .NET Framework 4 – sowohl in virtuellen, wie in echten 32- und 64-Bit-Umgebungen. Die neuen Werkzeuge und Workflows in Visual Studio 2010 bringen Tester und Entwickler enger zusammen. Sie optimieren den Informationsfluss und enthalten innovative neue Funktionen, beispielsweise zum Vermeiden von “Fehler-Ping-Pong” durch nicht reproduzierbare Bugs. Zielgruppe für dieses Whitepaper sind Tester, Testmanager und Verantwortliche für Qualitätssicherung in Softwareprojekten. Zum Download als PDF-Datei oder XPS-Datei.