Boost 1.35 kompilieren

2008-06-28

Boost 1.35 ist seit einiger Zeit erschienen, und mit der neuen Version gab es Änderungen, wie man die Bibliotheken kompiliert. Die Getting Started-Anleitung beschreibt dies schon im Ansatz, verlinkt aber leider nicht auf eine etwas tiefergehende Dokumentation (sieht man mal von der für Laien unverständlichen Dokumentation zu Boost.Build ab). Im Nachfolgenden beschreibe ich, was es für neue Schalter für bjam gibt, und wie man die verschiedenen Bibliotheken erstellen läßt.

Read the rest of this entry »


Exceptions vs. Asserts

2008-03-14

Dieser Artikel soll Exceptions und Asserts beleuchten, wozu man sie braucht, wann man sie einsetzt und welche Fehler mal vermeiden sollte.
Read the rest of this entry »


Symbol Server im Visual Studio nutzen

2008-03-14

Beim Debuggen von Applikationen hat man oft das Problem, daß ein Fehler innerhalb der Win32-DLLs auftritt, z.B. kernel32.dll, gdi32.dll oder in anderen DLLs von Microsoft. Man weiß zwar, daß man z.B. die API nicht richtig verwendet oder eine falsche Vorgehensweise bei den Aufrufen anwendet, nur ist es schwierig, nur anhand eines Callstacks mit System-Funktionen herauszubekommen, wo eigentlich die Applikation hängt oder crashed. Oder man stoppt das debuggte Programm, aber alle Threads sind in Systemfunktionen. Der Symbol Server hilft hier, Licht ins Dunkel zu bringen.

Read the rest of this entry »


WTL Window Resizing

2008-03-13

CWindow-basierte Klassen der WTL können relativ einfach resizable gemacht werden. So wirds gemacht:

Read the rest of this entry »


How to compile cairo for PocketPC

2008-01-23

This article will shed some light on how to compile cairo (the graphics library) for use under PocketPC. I will use Visual Studio 2008 to set up the project for Win32, then create a PocketPC configuration, trying to compile it for this platform. Finally I will discuss which Win32 APIs and thus cairo features are not going to work.

Read the rest of this entry »


In-depth analysis of the ARM “by-value” compiler bug

2007-12-09

Last time I described how the ARM by-value compiler bug happens. This time I will go in-depth to show what happens at the ARM disassembly level. But first, we need a test program to show the bug. Read the rest of this entry »


Win32 entry points

2007-12-07

The infamous ARM “by-value” compiler bug

2007-12-06

This post will be about an ARM compiler bug that I discovered some time ago while porting STLport 5 for eMbedded Visual C++ 3 and 4. I also reported the bug to Microsoft and it seems they fixed the bug in Microsoft Visual Studio 2008. Note that the bug report contains a little bit complicated example. I will present a more understandable test for the bug here.

Read the rest of this entry »


MoveItemToGroup not implemented

2007-07-08

Derzeit versuche ich, das Grouping-Feature des Win32 List Controls zu benutzen. Mittels WTL 8 und entsprechendem Wizard hab ich ein Projekt angelegt, und es lassen sich auch Gruppen einfügen. Gruppen werden jedoch nicht angezeigt, wenn kein Item der Gruppe zugeordnet ist. Als nächstes wollte ich Items zu Gruppen zuordnen. Dabei ist mir aufgefallen, daß die Methode MoveItemToGroup() bzw. die Message LVM_MOVEITEMTOGROUP nicht implementiert ist (und daneben noch ein paar andere Details vom Grouping). Das kann man aber per SetItem neu implementieren:

LVITEM lvItem;
lvItem.mask = LVIF_GROUPID;
lvItem.iItem = iItemIndex;
lvItem.iSubItem = 0;
lvItem.iGroupId = iGroupID;
SetItem(&lvItem);

Was auch nicht geht, ist für LVGROUP::uAlign das Flag LVGA_FOOTER_CENTER anzugeben. Der InsertGroup()-Aufruf schlägt dann fehl. Außerdem werden bei einem Aufruf von GetGroupMetrics() nicht alle Felder zurückgeliefert. Die Dokumentation beschreibt, was not implemented ist. Einfacher wäre fast gewesen zu dokumentieren, was überhaupt implementiert ist.