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 Win32 library. It has been used in commercial applications for nearly 20 years.
WDS was a rock-solid, complete system used commercially under 32-bit WIN32 on Windows for about 15 years. During that time, Win32 morphed a bit, but WDS has not kept up. Additionally, WDS was successfully ported to Wine many years ago.
Currently, WDS doesn’t build on Windows because of the changes that occurred over the years and the move to 64 bits. In spite of this, my sense is that it wouldn’t be too hard to get running.
Additionally, WDS currently builds under 64-bit WINE but will not link. Questions on the WINE group were left unanswered, so the project was abandoned. Presuming WineAPI works, getting this working should also be easy.
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