This Windows Development System (WDS) is a set of Dynace https://blakemcbride.github.io/Dynace/ classes that make the development of Windows GUI applications extremely easy. It also works on Linux and macOS through the WINE library. It has been used in commercial applications for nearly 20 years.
WDS was used commercially under 32-bit Win32 on Windows for about 15 years. It has been updated and now builds and runs as a 64-bit application on both native Windows (MSVC/NMAKE) and Linux under Wine (tested on Fedora 42 with GCC 15 and Wine 10.x).
Dynace (the system WDS is built upon) is current and works fine in all of those environments.
Source code for this system is at: https://github.com/blakemcbride/WDS
Build instructions are at: docs/BUILD.txt
The following will give you a small taste of how easy WDS makes the development of GUI applications:
#include "generics.h"
int start()
{
object win;
win = vNew(MainWindow, "My Test Application");
vPrintf(win, "Hello, World!\n");
return gProcessMessages(win);
}
resources.h is created by your resource editor that comes with Windows.
#include "generics.h"
#include "resource.h"
static long file_message(object wind, unsigned id);
static long file_exit(object wind, unsigned id);
int start()
{
object win;
win = vNew(MainWindow, "My Test Application");
mLoadMenu(win, IDR_MENU1);
mAssociate(win, ID_FILE_MESSAGE, file_message);
mAssociate(win, ID_FILE_EXIT, file_exit);
return gProcessMessages(win);
}
static long file_message(object wind, unsigned id)
{
gMessage(wind, "File Message");
return 0L;
}
static long file_exit(object wind, unsigned id)
{
gQuitApplication(Application, 0);
return 0L;
}
#include "generics.h"
#include "resource.h"
static long file_message(object wind, unsigned id);
static long file_dialog(object wind, unsigned id);
static long file_exit(object wind, unsigned id);
int start()
{
object win;
win = vNew(MainWindow, "My Test Application");
mLoadMenu(win, IDR_MENU1);
mAssociate(win, ID_FILE_MESSAGE, file_message);
mAssociate(win, ID_FILE_DIALOG, file_dialog);
mAssociate(win, ID_FILE_EXIT, file_exit);
return gProcessMessages(win);
}
static long file_message(object wind, unsigned id)
{
gMessage(wind, "File Message");
return 0L;
}
static long file_dialog(object wind, unsigned id)
{
object dlg;
int r;
dlg = mNewDialog(ModalDialog, DL1, wind);
r = gPerform(dlg);
gDispose(dlg);
return 0L;
}
static long file_exit(object wind, unsigned id)
{
gQuitApplication(Application, 0);
return 0L;
}
See docs/ORIENT.txt
This system was written by Blake McBride