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.
Exceptions vs. Asserts
2008-03-14Dieser 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-14Beim 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.
WTL Window Resizing
2008-03-13CWindow-basierte Klassen der WTL können relativ einfach resizable gemacht werden. So wirds gemacht:
How to compile cairo for PocketPC
2008-01-23This 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.
Win32 entry points
2007-12-07When creating a console application (see linker settings under “System”, the “SubSystem” option), the main function is called main or wmain, depending on your unicode settings. I always use _tmain provided by the tchar.h header. The entry points that can specified at the linker’s /entry option is either mainACRTStartup or mainWCRTStartup. Note that this works for Windows CE, too, but a console window is not shown. This is pretty convenient when porting an application. You don’t have to rewrite the existing main function for that.
When creating a plain Win32 application that shows no console window, you can use WinMainCRTStartup or wWinMainCRTStartup to specify the WinMain() or the wWinMain() function as function to start. Windows CE projects always use wWinMainCRTStartup unless something different is specified.
MoveItemToGroup not implemented
2007-07-08Derzeit 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.
Posted by vividos