Forked from cdragan/WinAPI-Wrapper with some minor compatability fixes and a switch to the CMAKE build system.
This is a C++ wrapper for WINAPI to take some of the clumsiness out of programming WIN32 applications. Most classes wrap the calls to the WINAPI functions so that they keep track of the handles for you and define some sensible defaults.
Almost all the documentation in the origional repo help dir still applies and is recommended reading. However a major change is that the library default WinMain function must now be defined in your code for compatability with non MSCV linkers. You can easiliy do this using the USE_LIB_WINMAIN macro. For example the sdi.cpp example app is now:
// Include main WinAPI Wrapper header
#include<winapi.h>// Include the WinAPI Wrapper namespaceusingnamespaceWinAPI;// Define main window class based on a regular window classclassMainWindow: publicWindow {
public:// Constructor creates the actual window (through CreateWindowEx)MainWindow() {
Create( "Sample App" );
}
// During window destruction the message queue is stoppedvirtualvoidOnDestroy() {
PostQuitMessage( 0 );
}
// Paint "Hello, World!" during WM_PAINTvirtualvoidOnPaint() {
PaintDC( *this ).TextOut( WPoint(50,50), "Hello, World!" );
}
};
// The application object using the main window classnamespace {
Application< MainWindow > app;
}
USE_LIB_WINMAINThis example assumes the UNICODE macro isn't defined for simplicity's sake. The real example supports ASCII and and UNICODE chars.
All modifications are made available under the origional license of the library (see license.txt).