C++CommunityProgrammierenVS 11Windows 8Martin Richter - Mi 16 Mai 2012 20:01

Auf http://www.c-plusplus.de ist von mir jetzt ein Artikel zu der ADC C++ Konferenz in Ohlstadt erschienen, die am 03.04. Mai 2012 stattfand.
Über die Abendveranstaltung habe ich in meinem letzten Blogartikel auszugsweise berichtet.

Advanced Developers Conference C++ – native C++ im Blickpunkt (Tag 1)
Advanced Developers Conference C++ – native C++ im Blickpunkt (Tag 2)

Viel Spaß beim Lesen!

 

ATLC++MFCProgrammierenVS 11Windows APIMartin Richter - Fr 04 Mai 2012 09:15

Gestern Abend hatten wir hier auf der ADC 2012 für C++ in Ohlstadt bei einem schönen Abendevent eine Q&A. Letztes Jahr fand diese Q&A auf einer Schiffahrt auf dem Chiemsee statt. Dieses Jahr war es ein Fußweg von ca. 20 Minuten vom Konferenzhotel, zu einem großen “Grillplatz”, dort standen Zelte, Fackeln Lagerfeuer und es wurde gut gegessen und wie immer viel “Networking” betrieben.

Wie auch letztes Jahr sollten detailierte Fragen auf diese Q&A zu späterer Stunde vertagt werden.

DIE FRAGE die viele Entwicklern brennend interessierte war:
Kann man mit VS-11 Programme für Windows XP entwickeln oder nicht?

Rede und Antwort stand in diesem Fall Steve Teixeira, als Director of Program Management. Also in diesem Fall jemand, der wirklich etwas sagen und auch mit zu entscheiden hat.

Ich gebe seine Antwort von Steve, auf diese Frage zusammengefasst wie folgt wieder:

  1. Zu dem Zeitpunkt als die Entscheidung für das Fallenlassen vom XP-Support gefällt wurde erschien dies als richtig.
    Jetzt muss man allerdings eingestehen, dass diese Entscheidung ein Fehler von Microsoft war.
  2. Die Benutzerzahlen wurden weiter als sinkend berechnet. Man vermutete, dass zum Zeitpunkt der Veröffentlichung von VS-11 noch maximal 20% XP-Nutzer vorhanden wären. Neue Umfragen gehen aber von einer Verbreitung von mindestens noch 46% Windows XP Installationen aus.
  3. Bei Microsoft wurde auch vermutet, dass es genügt den Entwicklern die neue VS-11 Oberfläche anzubieten aber das für das Compilieren das Toolset von VS-2010 genügen würde. Es wurde unterschätzt wie groß das Interesse an den neuen Compiler Funktionen in VS-11 mit C++11  ist. Was eben auch AMP und neue STL Funktionalität einschließt.
  4. Die Folge ist nun, dass Microsoft die Entscheidung für das Fallenlassen des Windows-XP Support neu überdenkt.
    Allerdings kann dies nicht mehr bis zum RTM geschafft werden.
    (Anmerkung von mir: Aktuell in der Beta wurde der gesamte Code, der die Windows-Vista/7 Funktionen isoliert entfernt und alle DLLs werden implizit geladen).

Möglich ist also, dass es ein Featurepack geben wird, dass nach dem RTM ausgeliefert wird, und in dem es dann doch einen XP Support in allen Bibliotheken und im Compiler gibt.

Die Antwort erschien mir ehrlich und geradeaus und war gewisslich keine Vertröstung ohne echten Hintergrund.
Ich weiß nicht wie groß wirklich die Chancen sind, aber diese Aussage deckt sich auch mit den “Gerüchten”, die ich um 5 Ecken gehört habe, und deckt sich auch mit der internen Diskussion, die mit den MVPs geführt wird.

Meine persönliche Schätzung ist eine 25 prozentige Chance, dass wir doch noch einen Windows-XP Support im VS-11 erhalten werden.

Lassen wir und überraschen. Aber es ist eine gute Nachricht :!:

PS: Ich schreibe dies direkt von der ADC für C++ 2012 in Ohlstadt.

Nachträge und Kommentare habe ich direkt in den Blog-Post übernommen, da diese manchmal übersehen werden:

Kommentar 1 vom 04.05.2012 von Steive Teixeira zur Klarstellung:

Hi Martin,
It was great to see you at ADC C++ this week! Just so that there is no confusion for the readers of your blog, the issue of XP support for C++ in Dev11 is one we’re taking very seriously, and we’re continuing to take customer feedback on Dev11 beta. However, we are not yet prepared to make an announcement on platform support for the RTM version of Dev11. We will be making an announcement on this in the coming weeks.
Thanks!
Steve

Kommentar 2 vom 04.05.2012 von Michael Kühlshammer 

Steve Teixeira schickte mir heute einen Link für einen Workaround und empfahl mir, dass möglichst viele Leute auf dem unten angegebenen Link einen Beitrag dazu schreiben sollen (dafür voten sollen), dass der VC11-Compiler auch Code für Windows XP erzeugt. Hier die Email-Antwort von Steve Teixeira:

“Thanks for your email. We continue to devote resources to and support MFC in Dev11. The Windows XP issue is still unsettled, and I appreciate your feedback on this. You me have seen that I posted some of my thoughts on XP support in the comment thread of this blog entry on the VC++ team blog: http://blogs.msdn.com/b/vcblog/archive/2012/04/18/10295093.aspx.

Thanks again,
Steve

HardwareReal LifeSonstigesMartin Richter - Di 10 Apr 2012 11:23

Kundenwünsche und Verbesserungsvorschläge gehören zum Alltag eines jeden Softwareentwicklers. Dazu gehören natürlich speziell auch die Vorschläge aus dem Marketing der eigenen Firma. In der Vergangenheit habe ich festgestellt, dass es nicht einfach ist solche Verbesserungsvorschläge (besonders die des Marketings :!: ) einfach und intelligent zu verwalten. Es ist für jedes Softwarehaus – ob klein oder groß – ein mittleres Problem. So auch bei uns.

Wir haben uns als Firma nun zu einer sehr intelligenten und in jeder Beziehung preiswerten Hardwarelösung gefunden :D

PS:  Lösungen im papierlosen Büro sind hier weitaus einfacher zu realisieren.

C++MFCProgrammierenWindows APIMartin Richter - Mo 02 Apr 2012 21:46

Wenn man ein COM Objekt erzeugt und dieses im System über die ROT (Running Object Table) sichtbar, dann sollte man normalerweise Weak-Locks benutzen. Das kann man auch in der Doku zu RegisterActiveObject  nachlesen. Ansonsten wird es schwierig zu entscheinden, wann man seine Objekte zerstören kann.

Wenn aber nun eine Anwendung sichtbar gemacht wird, also das Objekt vom Benutzer übernommen wird, dann darf es ja nicht beendet werden, wenn der externe Erzeugende Prozess beendet wird und die letzte Referenz zu dem Objekt beendet wird.

Wie verhindert man das?

Die Lösung ist relativ simpel. Solange die Anwendung sichtbar ist, oder besser, wenn sie sichtbar wird ruft man einmalig CoLockObjectExternal auf! Dadurch wird ein weitere Lock auf das Objekt ausgeführt.
Aber Achtung :!: Hier wird keine Referenzzählung verwendet. Egal wie oft man CoLockObjectExternal aufruft, der Referenzzähler wird nur einmal erhöht.

Beendet der User das Programm entsperrt man das Objekt wieder. Sollten keine weiteren Objekte in der Anwendung benutzt werden, dann terminiert die Anwendung wenn man alles richtig gemacht hat ;)
Man ruft CoLockObjectExternal am Besten entweder auf, wenn die Anwendung sichtbar wird (WM_SHOWWINDOW) und erneut wenn WM_CLOSE aufgerufen wird. Die MFC macht alles fast automatisch richtig, bis eben auf die Aufrufe von CoLockObjectExternal, die man selbst im Code unterbringen muss, wie auch die Registrierung der Objekte in der ROT.
Ist noch eine externe Referenz vorhanden wird die Anwendung nicht terminiert, weil der interne Objektzähler der MFC dies verhindert (Code in CFrameWnd::OnClose). Ist kein externer Lock mehr vorhanden sperrt CoLockObjectExternal die Anwendung vom terminieren weil damit exakt eine Referenz aufrecht erhalten wird. Wird durch den Benutzer das Schließen der Anwednung angefordert wird dann im WM_CLOSE diese letzte Refrenz aufgelöst und die Anwednung kann terminieren auch wnen noch ein Eintrag in der ROT vorhanden ist. Dieser wird dann beim Beenden der Applikation auch entfernt.

HardwareReal LifeSonstigesMartin Richter - Fr 23 Mrz 2012 20:46

Ich war neugierig weil ich mir für Fahrradtouren, einige Wanderurlaube und auch für ein wenig Geocachen ein handliches Navi zulegen wollte. Das S3857 von Medion im Bundle mit einem Bandee Gurt erschien mir preiswert und ich dachte ehe man so ein Gerät nicht in den Fingern hat kann man dies auch nicht beurteilen.

Hier, was beim Kennenlernen herauskam!

Positiv:

+ Äußerlich und von der Verarbeitung super
+ 8GB Speicher mehr als ausreichend
+ sehr stabiler und komfortabler Fahrradhalter dabei
+ Netzteil mit dabei
+ Schöne und flexible Fahrradlenkerhalter dabei
+ Routenberechnung gut und flott
+ Geocaching Funktionen gut
+ Genauigkeit sehr gut
+ attraktiver Preis für ein Touchscreen-Gerät
+ Bedienung einfach (gut bis zufriedenstellend)

Negativ:

- Leider reagiert die Karte beim Ziehen zu träge und zu langsam
- die Karte springt sehr stark bei flotter Bewegung (Fahrrad, Auto)
- man setzt oft unwillkürlich und ungewollt Waypoints, obwohl man nur das Menü aktivieren will
- oft werden auch Waypoints gesetzt weil das Gerät nicht reagiert und man denkt man müsse noch mal tippen
- braucht doch sehr lange nach dem “kalten” Einschalten bis zur ersten Positionsbestimmung
- wenn man etwas mehr Waypoints (Caches) hat (ca. 700 und mehr), wird das Gerät fast nicht mehr bedienbar
- Software Updates sind schon länger angekündigt aber keine bisher weitern da. (Stand 10.2011)
- Support bei Medion, liest die Emails nicht richtig und verwechselt einen mit normalen Navi-Kunden…
- Support am Telefon teilweise ahnungslos über die eigenen Produkte
- man kann Waypoints/Caches/Tracks nur als Ganzes löschen oder einzeln, löschen (sehr umständllich)
- man kann interne Waypoints/Tracks/Caches nicht mit Software vom PC-verwalten.
- keine Stromsparfunktionen (ausschalten des Displays), obwohl im Handbuch beschrieben (soll angeblich mit einem Softwareupdate kommen).
- man kann OSM Karten nur in dem Format aufspielen, dass von Medion kommt. Eigene Karten sind nicht einspielbar. - Kartenmaterial aus 07/2011. Erst im Februar kam das nächste Update. Standdatum der Karten ist mir unbekannt. Warum nicht alle 3 Monate ein Update?

Fazit:
Eigentlich ein attraktives und billiges Gerät mit guter Verarbeitung. Aber!
Der letzte Punkt in der Negativliste ist eigentlich der Killer. Wenn man also aktuelle Karten von http://www.openmtbmap.org laden möchte ist das nicht möglich. Hier sollte Medion sich unbedingt überlegen eigene Software freizugeben, die die Karten kompilieren kann.
Und auch was die Verwaltungssoftware betrifft müsste sich noch etwas ändern. Das man nicht mehrere Einträge (Waypoints, Tracks, Caches) auf einmal verwalten kann ist auch ein no go.
An der internen Software gäbe es noch ein paar Verbesserungen wie z.B. ein Stromsparmodus für das Display und etwas gegen das versehentliches setzen von Waypoints.

Das Gesamtbild war zu enttäuschend für mich und ich bin dann doch bei einem anderen Gerät gelandet.

PS: Meine Rezension basiert nicht auf dem Update für die Firmware R11, die am 15.03.2012 veröffentlicht wurde.  Hier mag sich einiges zum Positiven geändert haben. Insofern ist meine Rezension nicht ganz aktuell. Ich habe das Gerät Anfang Februar selbst ca. 6 Tage im Test gehabt.

C++ProgrammierenVS 2010Martin Richter - So 18 Mrz 2012 17:14

Ich habe eindeutig und nachvollziehbar die Erfahrung gemacht, dass dieser Fix Update für Microsoft Visual Studio 2010 Service Pack 1 (KB2635973) Visual-Studio 2010 instabil macht. (siehe auch http://support.microsoft.com/?kbid=2635973)

Ich habe seit längerer Zeit immer wieder Abstürze in Visual-Studio. Nachvollziehbar ist in den Dumps zu sehen, dass dies immer dann passiert wenn der Garbage-Collector anläuft. Es ist auch immer die selbe Stelle in den selben Modulen.

Oft verschwindet eine offene Visual-Studio Instanz, die im Hintergrund offen war, während ich z.B. in Outlook eine Email schreibe einfach vom Bildschirm und startet erneut. Ich sehe dann ein “blinken” in der Startleiste. Die Solution ist natürlich geschlossen. Dateien wurde nicht gesichert (können aber meistens recovert werden).
Oder ich arbeite in einem großen Projekt und Tippe meistens eine Klammer, einen Punkt oder einen Strich-Größerzeichen und Intellisense springt an und crashed meine Anwendung.

Ich habe mir sogar die Mühe gemacht 4 Arbeitstage ohne Addins zu arbeiten um zu prüfen ob ein Addin der Verursacher war. Ich kam mir ohne VA-X und Powertools wie Fingeramputiert vor. Dennoch kam es immer wieder zu Crashes, der genau gleichen Art. Meistens immer in großen Projekten.

Ich habe natürlich einen Case dazu, auf dem sich aber eigentlich nichts tut, obwohl Microsoft haufenweise Dumps von mir bekommen hat:
http://connect.microsoft.com/VisualStudio/feedback/details/635653/crash-while-navigating-in-vs-2010-and-crashes-when-vs-is-inactive-in-the-background

Allerdings bekam ich jetzt einen Tipp von einem Microsoft Mitarbeiter in diesem Case, den oben genannten  Fix zu deinstallieren.
Die Crashes sind nicht weg, aber sind eindeutig weniger geworden :!:
Wenn man sich die Daten ansieht merkt man auch schnell, dass ich diesen Case auch veröffentlicht, bevor der besagte Fix KB2635973 herauskam.

Tipp: Wer also mit einer Englischen VS-Version arbeitet sollte diesen Hotfix meiner Meinung nach deinstallieren :!:

C++ProgrammierenWindows APIMartin Richter - Mo 12 Mrz 2012 20:58

Es ist einfach ärgerlich, dass die Änderungen, die an der API mit den Common-Control 6.0 so mies dokumentiert sind.

Wir haben eine neu programmierte Standardklasse in ein selten benutzes (uraltes) Tool übernommen.
Auf einmal funktionierten Teile der UI nicht mehr richtig, die in unseren Produkten bisher fehlerfrei gearbeitet haben. Speziell hatten wir Probleme mit der Anzeige von Comboboxen.

Die Ursache war schnell gefunden:
GetComboBoxInfo liefert für hwndItem immer NULL, wenn die Applikation kein Common-Control 6.0 benutzt.
Es wäre alles viel schneller entdeckt worden, wären passende ASSERTs eingebaut worden an den Stellen, an denen man auch etwas bestimmtest erwartet. Eben hier, dass hWndItem nicht NULL ist. Aber vermutlich dachte der Programmierer: Wenn ich schon eine Information bekomme, dann ist diese Information bestimmt auch richtig und vollständig.
Pustekuchen … :( … aber wer will ihm das übel nehmen.

Das steht in der Doku zu COMBOBOXINFO natürlich nirgends drin (bzw. jetzt natürlich schon, weil ich eine entsprechende Community Addition gemacht habe).
http://msdn.microsoft.com/en-us/library/windows/desktop/bb775798(v=vs.85).aspx

ProgrammierenSoftwareToolsMartin Richter - Di 06 Mrz 2012 19:50

Mit der weiten Verbreitung von virtuellen Maschinen wird der Remote Desktop zum alltäglichen Werkzeug.  Wer viele Verbindungen verwalten muss, hat sich bestimmt auch den Desktop mit Links zugebaut… ;)

Dabei geht es auch viel einfacher und extrem komfortabel mit Royal-TS (aktuell Version 2.0)
Mehrere Verbindungen luxuriös in einer Oberfläche verwalten. Ob Fullscreen oder im Fenster. Dazu noch einige nette Features,

Mehr unter:
http://www.code4ward.net/main/

C++ProgrammierenVS 11Martin Richter - Mi 29 Feb 2012 23:32

Wie angekündigt wurde die VS-11 Beta 1 heute veröffentlicht.
Jetzt kann man auch die neue VS komplett testen und nicht nur den neuen Compiler mit den speziellen Erweiterungen für die Windows RT für Metrostyle Applikationen zu erzeugen, der ja schon in einem Developer Preview veröffentlicht wurde.

http://www.microsoft.com/visualstudio/11/de-de/downloads

Diese Beta Version hat bereits eine Go-Live Lizenz und darf produktiv genutzt werden.
Neu in den ganzen Paketen ist eine kostenlose TFS-Express Editition für bis zu 5 Entwickler.
Neu ist auch, dass es jetzt schon in der Beta 1 Sprachpakete zum herunterladen gibt. Wer also in Deutsch testen will, kann das jetzt schon tun.

InternetSoftwareMartin Richter - Sa 25 Feb 2012 19:55

Vermutlich ist es aktuell zu kalt, die Luftfeuchtigkeit ist zu hoch oder sonst etwas hat meinen Internet Explorer 9 verschnupft.
So sollte es aussehen:

Aber bei mir erscheint nur das IE9 Icon auf jedem Tab:

Alle schönen FAVICONS sinf weg.
Wenn man es gewohnt ist, dann sucht man seine Tabs schon eher visuell nach dem Icon als nach dem Text der darauf steht.
Lästig! Also wie beheben wir das?

Ich musste etwas länger googlen. Alles mögliche wurde empfohlen: IE-temporäre Dateien löschen; Icon-Cache von Windows löschen… funktioniert alles nicht.

Auf einer englischen Seite fand ich dann einen Hinweis auf den Browserverlauf (den ich damit gar nicht in Verbindung gebracht habe).
Aber OK. im Internet Explorer -> Extras -> Internetoptionen -> Löschen -> Brwoservrlauf.
Danach sah wieder alles so aus wie gewohnt. Schade, dass der Browserverlauf nun weg ist und damit auch die Seite mit den beliebtesten Sites, weil ich auch den gerne benutze, aber die Icons waren mir wichtiger.

Nächste Seite »