<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Jochen Kalmbach’s Blog</title>
	<link>http://blog.kalmbach-software.de/de</link>
	<description>Mein Blog über Win32 und .NET - Endlich mein Blog auch in Deutsch</description>
	<pubDate>Sun, 07 Mar 2010 21:05:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>C++/CLI und WinForms macht keinen Sinn</title>
		<link>http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/</link>
		<comments>http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 14:42:03 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/</guid>
		<description><![CDATA[Vielen Anfänger, welche C/C++ lernen wollen, suchen sich nach einer kostenlosen Entwicklungsumgebung und stossen dann früher oder später auf die Visual Studio 2008/2010 Express Edition.
Und ein Anfänger will natürlich gleich sichtbare Erfolge sehen und beginnt logischerweise gleich mit einer Fenster-Anwendung.
Leider enthält die VC2008/2010EE nur WinForms als graphische Oberfläche. Deshalb entwicklen die meisten dann nicht mit [...]]]></description>
			<content:encoded><![CDATA[<p>Vielen Anfänger, welche C/C++ lernen wollen, suchen sich nach einer kostenlosen Entwicklungsumgebung und stossen dann früher oder später auf die <a href="http://www.microsoft.com/express/downloads/">Visual Studio 2008/2010 Express Edition</a>.</p>
<p>Und ein Anfänger will natürlich gleich sichtbare Erfolge sehen und beginnt logischerweise gleich mit einer Fenster-Anwendung.</p>
<p>Leider enthält die VC2008/2010EE nur WinForms als graphische Oberfläche. Deshalb entwicklen die meisten dann nicht mit C/C++, sondern mit C++/CLI, was eine komplett andere Sprache ist und für die meisten nur zu Verwirrung führt.</p>
<p>Ich Rate jedem Anfänger davon ab VC 2008/2010 Express Edition für graphische Oberflächen zu verwenden, aus folgenden Gründen:</p>
<ul>
<li>Der WinForms-Designer ist miserabel, da er die Implementierung von Methoden in der h-Datei vornimmt, was spätestens zu Problemen führt, wenn man mehr als ein Form hat und auf Methoden/Properties des anderen Forms zugreifen will (da man dann zyklische Abhängigkeiten in den h-Dateien hat, die man nur lösen kann, wenn man die Implementierung in die cpp-Datei verlegt)
<li>Wenn man die Anwendung <a href="http://blog.kalmbach-software.de/de/2009/12/17/ccli-programme-auf-einem-anderen-rechner-ausfuhren/">verteilen will</a>, so muss man neben dem .NET-Framework auch die C-Runtime installieren; das muss man bei einer reinen .NET-Anwendung (z.B. C#) nicht
<li>C++/CLI ist primär als InterOp Sprache zwischen .NET und native Code gedacht; das sieht man auch schon daran, dass seit VC2008 auch der Data-Wizward für C++/CLI entfernt wurde. Daraus ergibt sich gleich der nächste Punkt:
<li>Der <a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=292118">Data-Wizard wurde in VC 2008 entfernt</a> um auch deutlich zu machen, dass der Focus auf native-managed InterOp liegt
<li>Ca. 99% aller Beispiele im Internet sind mit C#; man findet fast keine Beispiele in C++/CLI
<li>C++/CLI ist eine <a href="http://www.ecma-international.org/publications/standards/Ecma-372.htm">eigene Sprache</a> und hat mit (ISO) C/C++ nichts zu tun; und das ganze zu mischen ist meistens noch viel sinnfreier, es sei denn, man weiss was man tut (was zu 99% nicht der Fall ist; zumindest in den Fragen, die ich aus den Foren entnehme)
</ul>
<p>Meine Empfehlung für Anfäger:<br />
Wenn Ihr unbedingt graphische Oberflächen machen wollt, dann nehmt lieber C# (gibt es auch als Express Edition).</p>
<p>Meine Empfehlung für Microsoft:<br />
Wenn Ihr auch mit VC++ Anfänger erreichen wollt, dann liefert bitte die MFC in der Express-Edition mit; oder bindet von mir aus <a href="http://www.wxwidgets.org/">wxWidgets</a> ein <img src='http://blog.kalmbach-software.de/de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Die Shim Datenbank</title>
		<link>http://blog.kalmbach-software.de/de/2010/02/22/die-shim-datenbank/</link>
		<comments>http://blog.kalmbach-software.de/de/2010/02/22/die-shim-datenbank/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 10:02:54 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2010/02/22/die-shim-datenbank/</guid>
		<description><![CDATA[Wenn jemand mal interesse an den Tiefen der Shim-Datenbank hat, der kann gerne auf mein Projekt verweisen, welches ich in meinem englischen Blog gepostet habe:
The Shim Database
]]></description>
			<content:encoded><![CDATA[<p>Wenn jemand mal interesse an den Tiefen der Shim-Datenbank hat, der kann gerne auf mein Projekt verweisen, welches ich in meinem englischen Blog gepostet habe:<br />
<a href="http://blog.kalmbach-software.de/2010/02/22/the-shim-database/">The Shim Database</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2010/02/22/die-shim-datenbank/feed/</wfw:commentRss>
		</item>
		<item>
		<title>C++/CLI Programme auf einem anderen Rechner ausführen</title>
		<link>http://blog.kalmbach-software.de/de/2009/12/17/ccli-programme-auf-einem-anderen-rechner-ausfuhren/</link>
		<comments>http://blog.kalmbach-software.de/de/2009/12/17/ccli-programme-auf-einem-anderen-rechner-ausfuhren/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 20:06:33 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2009/12/17/ccli-programme-auf-einem-anderen-rechner-ausfuhren/</guid>
		<description><![CDATA[In Foren kommt oft die Frage: Mein C++/CLI Programm läuft nicht auf anderen Rechner! Was brauche ich damit es läuft?
Die Frage ist einfach zu beantworten, wenn wir davon ausgehen, dass das Programm mit VS2008 erstellt wurde:

Zuerst wird das .NET Framework benötigt (da C++/CLI ja die CLR verwendet). Aktuell ist dies die Version 3.5SP1:
.NET 3.5 SP1 [...]]]></description>
			<content:encoded><![CDATA[<p>In Foren kommt oft die Frage: Mein C++/CLI Programm läuft nicht auf anderen Rechner! Was brauche ich damit es läuft?</p>
<p>Die Frage ist einfach zu beantworten, wenn wir davon ausgehen, dass das Programm mit VS2008 erstellt wurde:</p>
<ol>
<li>Zuerst wird das .NET Framework benötigt (da C++/CLI ja die CLR verwendet). Aktuell ist dies die Version 3.5SP1:<br />
<a href="http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe">.NET 3.5 SP1 (Full download)</a><br />
Damit es aber auch Problemlos läuft wird min. noch dieser Hotfix anschliessend benötigt:<br />
<a href="http://support.microsoft.com/kb/959209/en-us">An update for the .NET Framework 3.5 Service Pack 1 is available</a></p>
<li>Und da Du C++/CLI (also C++) verwendet hast, benötigst Du noch die C-Runtime DLLs, da C++/CLI (CLR) nur mit der DLL-Version der C-Runtime (CRT) verwendet werden kann:<br />
<a href="http://www.microsoft.com/downloads/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&#038;displaylang=en">VC2008 Runtime with SP1 and ATL hotfix</a>
</ol>
<p>PS: Falls man <strong>kein</strong> CLI (CLR / .NET) verwendet hat, so ist es meistens einfacher, <a href="http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/">wenn man statisch gegen die CRT linkt</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2009/12/17/ccli-programme-auf-einem-anderen-rechner-ausfuhren/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Source-Indexing (TFS) und Symbol-Store</title>
		<link>http://blog.kalmbach-software.de/de/2009/11/09/source-indexing-tfs-und-smbols-store/</link>
		<comments>http://blog.kalmbach-software.de/de/2009/11/09/source-indexing-tfs-und-smbols-store/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 14:51:33 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[WPF]]></category>

		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2009/11/09/source-indexing-tfs-und-smbols-store/</guid>
		<description><![CDATA[Wer von Euch kennt das Problem: Der Kunde hat ein Absturz oder einen Hänger Deines Programmes. Das einzige was Du bekommst ist ein Dump-File (z.B. entweder via WER oder durch eigenes schreiben von MiniDumpWriteDump).
Jetzt beginnt für Dich das Problem:

Welche Version hat der Kunde?
Welche Source-Files brauche ich für diese Version?
Wo zum teu.. sind nochmals die passenden [...]]]></description>
			<content:encoded><![CDATA[<p>Wer von Euch kennt das Problem: Der Kunde hat ein Absturz oder einen Hänger Deines Programmes. Das einzige was Du bekommst ist ein Dump-File (z.B. entweder via <a href="http://msdn.microsoft.com/en-us/isv/bb190483.aspx">WER</a> oder durch eigenes schreiben von <a href="http://blog.kalmbach-software.de/2008/12/13/writing-minidumps-in-c/">MiniDumpWriteDump</a>).<br />
Jetzt beginnt für Dich das Problem:</p>
<ol>
<li>Welche Version hat der Kunde?
<li>Welche Source-Files brauche ich für diese Version?
<li>Wo zum teu.. sind nochmals die passenden PDBs und EXEn für diese Version?
</ol>
<p>Mit diesem Fragen braucht man sich nicht beschäftigen, wenn man bei seinem Build Prozess noch zusätzlich zwei Dinge einbaut</p>
<ol>
<li>Source-Indexing
<li>Symbols-Store
</ol>
<h3>Source-Indexing (mit dem TFS)</h3>
<p>Source-Indexing sorgt dafür, dass in die Debug-Symole (PDB-Dateien) auch zusätzlich noch ein verweis auf die richtige TFS-Version eingefügt wird. Dadurch kann der Debugger (z.B. VS) man mit der PDB-Datei genau den passenden Source aus dem TFS holen, mit dem die DLL/EXE gebuildet wurde.<br />
Um dies zu machen braucht man zwei Dinge: &#8220;<a href="http://www.microsoft.com/whdc/DevTools/Debugging/">Debugging Tools For Windows</a>&#8221; und &#8220;<a href="https://www.activestate.com/activeperl/downloads/">ActivePerl</a>&#8220;). Das Source-Indexing findet sich bei den Debugging Tools im Unterverzeichnis &#8220;srcsrv&#8221; (also z.B. C:\Program Files\Debugging Tools for Windows\srcsrv). Da die &#8220;Skripts&#8221; (leider) in Perl geschrieben sind, ist auch noch ActivePerl notwendig. Es reicht aber, wenn man die <a href="http://downloads.activestate.com/ActivePerl/Windows/5.10/ActivePerl-5.10.1.1006-MSWin32-x86-291086.zip">ZIP-Datei</a> runterlädt und vor dem Aufruf einfach den Pfad auch noch auf das entpackte ActivePerl setzt.</p>
<p>Damit beim Source-Indexing auch der korrekte TFS-Server verwendet wird, muss man in der Datei &#8220;srcsrv.ini&#8221; die Zeile mit &#8220;MYSERVER&#8221; auf den richtigen TSF zeigen lassen.<br />
<code>MYSERVER=http://my-tfs-machine:8080</code></p>
<p>Jetzt muss man nach einen Build nur noch das Source-Indexing aufrufen und angeben, wo denn der Workstore und die PDBs liegen. Ich gebe der Einfachheithalber immer den Root aller Projekte an, welche ich gebuildet habe. Die Natchdatei sieht dann z.B. so aus (es kann auch direkt als eigenes Task in msbuild laufen):<br />
<code lang="DOS"><br />
rem Merke mit mal den aktuellen Pfad, was die Root meiner Projekte und Ausgabe ist<br />
set srvOrgDir=%CD%</p>
<p>rem Setze den pfad auch zu dem Perl Zeugs...<br />
path=%path%;"%CD%\Tools\srcsrv\ActivePerl-5.10.1.1006-MSWin32-x86-291086\perl\bin"</p>
<p>rem Wechsle in das Verzeichnis wo die Source-Indexing Tools liegen (liegt bei mir auch im TFS)<br />
cd .\Tools\srcsrv</p>
<p>rem Rufe das Source-Indexing auf<br />
call tfsindex.cmd -ALLROOT="%srvOrgDir%"</p>
<p>rem Setze wieder den ursprünglichen Pfad<br />
cd /D %srvOrgDir%<br />
</code></p>
<p>Alternativ kann man natürlich auch das srcsrv-Verzeichnis im TFS ablegen (so hab ich es gemacht), dann muss man nicht sicherstellen, dass man auf dem Build-Rechner auch die Debugging-Tools installiert hat.</p>
<p>Jetzt sollten nach einem Build alle PDB-Dateien mit der korrekten TFS-Version indiziert worden sein (dies erkennt man daran, dass ziemlich weit hinten in der PDB-Datei Einträge mit &#8220;MYSERVER&#8221; kommen&#8230;; kann man z.B. in Notepad anschauen).</p>
<h3>Symbol-Store</h3>
<p>Oben haben wir jetzt die PDB-Dateien mit dem passenden Verweis auf den TFS ausgestattet. Jetzt müssen wir nur noch sicherstellen, dass wir zu einem beliebigen späteren Zeitpunkt nicht mehr nach dieser PDB-Datei (und den dazugehörigen EXEn) suchen müssen. Dies geschieht am einfachsten mit dem &#8220;symstore&#8221; aus den Debugging Tools for Windows. Dies speichert einfach alle PDBs/EXEn in ein Verzeichnis (am besten ein Netzwerkverzeichnis, wenn es später mehrere Verwenden wollen).<br />
Das ablegen erfolgt dann ganz Simple durch:<br />
<code lang="DOS"><br />
.\Tools\SymStore\Symstore.exe add /r /f .\*.* /s G:\MyProject\SymbolStore\Files /t "Project Name"<br />
</code></p>
<p>Das war alles <img src='http://blog.kalmbach-software.de/de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Einstellungen in VS</h3>
<p>Ok, fast&#8230; denn man will das ganze ja auch noch verwenden&#8230; dazu muss man in VS noch ein paar Einstellungen machen, da per default der &#8220;Source-Server&#8221; deaktiviert ist. Dies muss aktiviert werden:<br />
<a href="http://blog.kalmbachnet.de/files/SourceServerSupport01.PNG"><img src="http://blog.kalmbachnet.de/files/SourceServerSupport01.PNG" /></a></p>
<p>Jetzt muss man noch den Pfad zu den zuvor abgelegten Dateien eintragen:<br />
<a href="http://blog.kalmbachnet.de/files/SourceServerSupport02.PNG"><img src="http://blog.kalmbachnet.de/files/SourceServerSupport02.PNG" /></a></p>
<p>Bekommt man jetzt ein Dump oder will in dieser EXE/DLL debuggen, so werden die Sourcen direkt vom TFS geholt (und in einem temporären Verzeichnis gespeichert) und man kann dies dann direkt debuggen.</p>
<p>Ich hoffe, dass hilft dem ein oder anderen.</p>
<p>PS: Beide Verfahren werden übrigens auch intern von Microsoft schon sehr lange eingesetzt (deswegen auch das Source-Indexing in Perl; PowerShell gab es damals noch nicht). Die gesamten Windows Sourcen sind so indiziert und (der wer darf <img src='http://blog.kalmbach-software.de/de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) können dann via CCP die passenden indizierten PDB-Dateien abgefragt werden, welche dann z.B: in VS/WinDbg die passenden Source runterlädt.</p>
<p>PPS: Wer das ganze noch für SubVersion haben will, kann es bei Stefan nachlesen:<br />
<a href="http://mcblogs.craalse.de/sku?title=source_server_und_symbol_server_setup_mi">Source Server und Symbol Server Setup mit Subversion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2009/11/09/source-indexing-tfs-und-smbols-store/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TechEd 2009 in Berlin</title>
		<link>http://blog.kalmbach-software.de/de/2009/10/31/teched-2009-in-berlin/</link>
		<comments>http://blog.kalmbach-software.de/de/2009/10/31/teched-2009-in-berlin/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 19:17:29 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[WPF]]></category>

		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2009/10/31/teched-2009-in-berlin/</guid>
		<description><![CDATA[Wer zufällig vom 9.11. bis 13.11. auf der TechEd Europe in Berlin ist, darf gerne mal im Technical Learning Center (TLC) an den Ask-the-Expert (ATE) booths vorbeischauen, wo ihr mich treffen könnt 
]]></description>
			<content:encoded><![CDATA[<p>Wer zufällig vom 9.11. bis 13.11. auf der <a href="http://www.msteched.com/europe/Public/">TechEd Europe in Berlin</a> ist, darf gerne mal im <a href="http://www.msteched.com/europe/Public/technical-learning-center.aspx">Technical Learning Center (TLC)</a> an den Ask-the-Expert (ATE) booths vorbeischauen, wo ihr mich treffen könnt <img src='http://blog.kalmbach-software.de/de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2009/10/31/teched-2009-in-berlin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ListBoxItem Template&#8230;</title>
		<link>http://blog.kalmbach-software.de/de/2009/10/30/listboxitem-template/</link>
		<comments>http://blog.kalmbach-software.de/de/2009/10/30/listboxitem-template/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 09:02:46 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2009/10/30/listboxitem-template/</guid>
		<description><![CDATA[Wir haben hier für die ListBox ein eigenes Template gemacht, dass eben alle ListBoxen bei uns in der Anwendung gleich aussehen&#8230; dabei haben wir einfach das Beispiel aus der MSDN verwendet: ListBoxItem ControlTemplate Example
Eigentlich sollte man ja meinen, dass dies Beispiel zumindest einigermaßen funktioniert&#8230; leider weit gefehlt&#8230;
Das Problem ist: Sobald wir ein eigenes DataTemplate für [...]]]></description>
			<content:encoded><![CDATA[<p>Wir haben hier für die ListBox ein eigenes Template gemacht, dass eben alle ListBoxen bei uns in der Anwendung gleich aussehen&#8230; dabei haben wir einfach das Beispiel aus der MSDN verwendet: <a href="http://msdn.microsoft.com/en-us/library/ms750821.aspx">ListBoxItem ControlTemplate Example</a></p>
<p>Eigentlich sollte man ja meinen, dass dies Beispiel zumindest einigermaßen funktioniert&#8230; leider weit gefehlt&#8230;</p>
<p>Das Problem ist: Sobald wir ein eigenes DataTemplate für spezielle Daten gemacht haben, hat ein Klick auf ein Element nur dann reagiert, wenn entweder genau auf den Rahmen des Items geklickt wurde oder genau auf den Text:<br />
<img src="http://blog.kalmbachnet.de/files/ItemListBox1.png" alt="ListBoxItem" /></p>
<p>Es ist also relativ schwer z.B. das &#8220;!&#8221; genau zu treffen&#8230;wir haben ewig gesucht, bis wir endlich den Grund gefunden haben&#8230; (dank Franks Unterstützung haben wir es mittels <a href="http://www.blois.us/Snoop/">Snoop</a> und der Event-Ansicht gefunden): Der Border in dem ControlTemplate hat keine Hintergundfarbe. Somit ist der Border &#8220;durchsichtig&#8221; (bzw. &#8220;x:Null&#8221;), was dazu führt, dass ein Klick auf den Border nicht vom Border verarbeitet wird, sondern vom darunterliegenden Scroll-Container&#8230; und der macht natürlich hier nichts damit&#8230;<br />
<a href="http://blog.kalmbachnet.de/files/WPF_ListBox1_ControlTemplate.zip">Hier ist auch ein Beispielprojekt (VS2008), damit man es mal selber probieren kann.</a></p>
<p>Für uns jetzt mal die Lösung: Wir setzen einfach die Hintergrundfarbe des Borders des ControlTemplates auf &#8220;Transparent&#8221;, dann wirken sich jetzt überall die Klicks auf die ListBox aus&#8230; danke an Hendrik für diesen Hinweis!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2009/10/30/listboxitem-template/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VS2010 Beta 2 - jetzt öffentlich verfügbar!</title>
		<link>http://blog.kalmbach-software.de/de/2009/10/21/vs2010-beta-2-jetzt-offentlich-verfugbar/</link>
		<comments>http://blog.kalmbach-software.de/de/2009/10/21/vs2010-beta-2-jetzt-offentlich-verfugbar/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 19:19:23 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2009/10/21/vs2010-beta-2-jetzt-offentlich-verfugbar/</guid>
		<description><![CDATA[Seit einigen Tagen konnte ja schon MSDN Abonenten die Beta von Visual Studio 2010 runterladen. Ab sofort ist es auch als öffentlichen Download verfügbar:
Microsoft Visual Studio 2010 Ultimate Beta 2 - ISO
Und wer sich gleich noch über die Neuerungen in der MFC informieren will (ja die gibt es!), kann sich hier ein Video anschauen:
Pat Brenner: [...]]]></description>
			<content:encoded><![CDATA[<p>Seit einigen Tagen konnte ja schon MSDN Abonenten die Beta von Visual Studio 2010 runterladen. Ab sofort ist es auch als öffentlichen Download verfügbar:<br />
<a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&#038;FamilyID=dc333ac8-596d-41e3-ba6c-84264e761b81">Microsoft Visual Studio 2010 Ultimate Beta 2 - ISO</a></p>
<p>Und wer sich gleich noch über die Neuerungen in der MFC informieren will (ja die gibt es!), kann sich hier ein Video anschauen:<br />
<a href="http://channel9.msdn.com/posts/Charles/Pat-Brenner-Visual-Studio-2010-MFC-and-Windows-7/">Pat Brenner: Visual Studio 2010 - MFC and Windows 7</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2009/10/21/vs2010-beta-2-jetzt-offentlich-verfugbar/feed/</wfw:commentRss>
		</item>
		<item>
		<title>vcredist für VS2008 - ATL security update</title>
		<link>http://blog.kalmbach-software.de/de/2009/10/20/vcredist-fur-vs2008-atl-security-update/</link>
		<comments>http://blog.kalmbach-software.de/de/2009/10/20/vcredist-fur-vs2008-atl-security-update/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 10:29:31 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2009/10/20/vcredist-fur-vs2008-atl-security-update/</guid>
		<description><![CDATA[Wer unbedingt gegen die DLL-Version der CRT/MFC linken will/muss, der steht seit dem ATL-Security-Update vor dem Problem, dass neu übersetze Projekte jetzt zwangsläufig die neue CRT-Version im Manifest eingetragen hat. Dieses verhalten wurde von MS einfach so eingeführt, ohne dies zu kommunizieren. Dies hat natürlich zu etwas Kritik geführt. Aber &#8220;Security&#8221; rechtfertigt ja alles.
Bisher wurde [...]]]></description>
			<content:encoded><![CDATA[<p>Wer unbedingt gegen die DLL-Version der CRT/MFC linken will/muss, der steht seit dem <a href="http://www.microsoft.com/technet/security/bulletin/MS09-035.mspx">ATL-Security-Update</a> vor dem Problem, dass neu übersetze Projekte jetzt zwangsläufig die neue CRT-Version im Manifest eingetragen hat. Dieses verhalten wurde von MS einfach so eingeführt, ohne dies zu kommunizieren. Dies hat natürlich zu etwas Kritik geführt. Aber &#8220;Security&#8221; rechtfertigt ja alles.<br />
Bisher wurde nach einem Update von VS2008 (also z.B. durch das Feature-Pack oder durch den SP1) im Manifest immer noch die Versionsnummer der RTM-Version eingetragen. Deshalb war es auch jetzt sehr verwirrend, dass plötzlich eine neue Version eingetragen wird, ohne dass man irgend etwas am Projekt geändert hat. Bisher war es nötig, dass man als Define ein <a href="http://blogs.msdn.com/vcblog/archive/2008/05/15/vc-runtime-binding.aspx">&#8220;_BIND_TO_CURRENT_CRT_VERSION=1&#8243;</a> setzt. Erst dann wurde die aktuelle auf dem Enticklungsrechner verwendete Version eingetragen. </p>
<p>Aber nun ist es nunmal anders und wir sind entweder gezwungen <a href="http://www.microsoft.com/downloads/details.aspx?familyid=294de390-3c94-49fb-a014-9a38580e64cb&#038;displaylang=en">das Security-Update von VS2008</a> nicht einzuspielen (was ich aktuell als einzige Lösung hier im Automatisierungs-Bereich habe, wenn man auch alte Systeme updaten muss) oder auf neuen Systemen das passende vcredist zu installieren.</p>
<p>Nur jetzt ist wieder die Frage: Welches ist denn nun die &#8220;richtige&#8221; vcredist&#8230;<br />
Hier die Auflistung der aktuell verfpgbaren Versionen:</p>
<ul>
<li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&#038;displaylang=en"><strong>VC2008 Runtime with SP1 and ATL hotfix</strong></a></li>
<li><a href="http://www.microsoft.com/downloadS/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&#038;displaylang=en">VC2008 Runtime with SP1</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=D5692CE4-ADAD-4000-ABFE-64628A267EF0&#038;displaylang=en">VC2008 Runtime with Feature Pack</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=8b29655e-9da4-4b6b-9ac5-687ca0770f93&#038;displaylang=en">VC2008 Runtime with ATL hotfix</a></li>
<li><a href="http://www.microsoft.com/downloadS/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&#038;displaylang=en">VC2008 Runtime (RTM)</a></li>
</ul>
<p>Wer ganz sicher gehen will, der sollte ab sofort nur noch das <a href="http://www.microsoft.com/downloads/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&#038;displaylang=en">oberste</a> installieren!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2009/10/20/vcredist-fur-vs2008-atl-security-update/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CurrentItem einer ObservableCollection ermitteln/ändern</title>
		<link>http://blog.kalmbach-software.de/de/2009/10/15/currentitem-einer-observablecollection-ermittelnandern/</link>
		<comments>http://blog.kalmbach-software.de/de/2009/10/15/currentitem-einer-observablecollection-ermittelnandern/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 09:13:15 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2009/10/15/currentitem-einer-observablecollection-ermittelnandern/</guid>
		<description><![CDATA[In letzter Zeit mach ich mehr mit WPF rum. Hierbei spielt ja das MVVM-Pattern eine große Rolle. Darin werden für änderbare Listen oft eine &#8220;ObservableCollection&#8221; verwendet. Diese informiert alle beteiligten darüber, wenn ein Element gelöscht oder hinzugefügt wurde. Auch unterstützt es dabei das Feature eines &#8220;CurrentItems&#8221;. Nur konnte ich dieses bisher nie über irgendwelche Methoden [...]]]></description>
			<content:encoded><![CDATA[<p>In letzter Zeit mach ich mehr mit WPF rum. Hierbei spielt ja das <a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx">MVVM-Pattern</a> eine große Rolle. Darin werden für änderbare Listen oft eine &#8220;<a href="http://msdn.microsoft.com/en-us/library/ms668604.aspx">ObservableCollection</a>&#8221; verwendet. Diese informiert alle beteiligten darüber, wenn ein Element gelöscht oder hinzugefügt wurde. Auch unterstützt es dabei das Feature eines &#8220;CurrentItems&#8221;. Nur konnte ich dieses bisher nie über irgendwelche Methoden aus dem View-Model heraus ansprechen&#8230; immer nur durch WPF-Elemente war dies möglich. So hat z.B. eine <a href="http://msdn.microsoft.com/de-de/library/system.windows.controls.listbox.aspx">ListBox</a> das Property &#8220;<a href="http://msdn.microsoft.com/de-de/library/system.windows.controls.primitives.selector.issynchronizedwithcurrentitem.aspx">IsSyncronizedWithCurrentItem</a>&#8220;. Damit werden Änderungen am &#8220;CurrentItem&#8221; durch andere Controls (z.B. durch andere ListBoxen) automatisch auch in alle &#8220;angeschlossenen&#8221; übernommen.<br />
Nur aus meinem ViewModel war es mir noch nicht gelungen das &#8220;CurrentItem&#8221; zu setzen (z.B. nach Button-Klick), da ich keine Methode oder Property finden könnte.<br />
Jetzt hab ich es endlich gefunden wie man auf das &#8220;CurrentItem&#8221; zugreift: Man muss sich zuerst die &#8220;DefaultView&#8221; der Collection holen. Dann kann man auch die Position des aktuelle Items ändern.<br />
z.B. um das &#8220;CurrentItem&#8221; zu setzen:</p>

<div class="wp_syntax"><div class="code"><pre>var dv = CollectionViewSource.GetDefaultView(viewModel.MeineCollection);
dv.MoveCurrentTo(viewModel.MeineCollection[1]);</pre></div></div>

<p>oder um das CurrentItem auszulesen:</p>

<div class="wp_syntax"><div class="code"><pre>var dv = CollectionViewSource.GetDefaultView(this.List);
MessageBox.Show(dv.CurrentItem.ToString());</pre></div></div>

<p>Hier gibt es auch ein kleines Beispielprojekt: <a href="http://blog.kalmbachnet.de/files/WPF_CurrentItem.zip">WPF_CurrentItem.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2009/10/15/currentitem-einer-observablecollection-ermittelnandern/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Windows 7 installiert&#8230;</title>
		<link>http://blog.kalmbach-software.de/de/2009/10/11/windows-7-installiert/</link>
		<comments>http://blog.kalmbach-software.de/de/2009/10/11/windows-7-installiert/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 07:35:13 +0000</pubDate>
		<dc:creator>jkalmbach</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://blog.kalmbach-software.de/de/2009/10/11/windows-7-installiert/</guid>
		<description><![CDATA[Nachdem ich auf meinen Wohnzimmer-Rechner schon vor einigen Wochen von Mac OSX auf Windows 7 Ultimate umgestiegen bin, hab ich das ganze vor zwei Tagen auf mit meinem Hauptrechner gemacht. Hier hatte ich vorher Vista 64 Ultimate drauf. Da ich mit der Partitionierung nicht ganz zufrieden war, hab ich mich entschieden alles neu zu installieren [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich auf meinen Wohnzimmer-Rechner schon vor einigen Wochen von Mac OSX auf Windows 7 Ultimate umgestiegen bin, hab ich das ganze vor zwei Tagen auf mit meinem Hauptrechner gemacht. Hier hatte ich vorher Vista 64 Ultimate drauf. Da ich mit der Partitionierung nicht ganz zufrieden war, hab ich mich entschieden alles neu zu installieren und das Ding ganz Platt zu machen.<br />
Zuerst habe ich mit Acronis TrueImage Home 2010 eine Sicherung gemacht und dann die Windows 7 Ultimate x64 installation gestartet. Ich muss sagen: Die Installation hat ca. 25 min. gedauert und er hat alle Hardware in meinem Rechner erkannt (RAID, Soundekarte (die kannte Vista nicht), usw.).</p>
<p>Alles im allem muss ich sagen, dass ich sehr zufrieden bin. Leider musste ich dann natürlich wieder alles installieren, was man so braucht&#8230; und die Daten wieder rüberkopieren.</p>
<p>Also, ich kann es nur empfehlen auf Windows 7 umzusteigen. Es macht einen schönen und performanten Eindruck.</p>
<p>Jetzt dürft ihr auch gerne zu meiner Windows 7 HouseParty kommen <img src='http://blog.kalmbach-software.de/de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kalmbach-software.de/de/2009/10/11/windows-7-installiert/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
