summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.mingw2
-rw-r--r--Makefile.vc62
-rw-r--r--alf/alf.cpp26
-rw-r--r--alf/alf.h2
-rwxr-xr-xmakemakefile.sh4
-rw-r--r--widgetfactory.cpp6
6 files changed, 32 insertions, 10 deletions
diff --git a/Makefile.mingw b/Makefile.mingw
index 5a0d289..796496a 100644
--- a/Makefile.mingw
+++ b/Makefile.mingw
@@ -2,7 +2,7 @@
CXX = i686-w64-mingw32-c++
CFLAGS = -std=c++98 -Wall -Wextra -mwindows -municode -DUNICODE -D_UNICODE -fno-exceptions -fno-rtti -gstabs
-LDFLAGS = -luser32 -lcomctl32 -lshell32 -lversion -static
+LDFLAGS = -luser32 -lcomctl32 -lshell32 -lrpcrt4 -lversion -static
out/widgetfactory.exe: out/widgetfactory.o out/alfbutton.o out/alfcompat.o out/alf.o out/alfdpiaware.o out/alfedit.o out/alflabel.o
$(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)
diff --git a/Makefile.vc6 b/Makefile.vc6
index c007c6a..a01e605 100644
--- a/Makefile.vc6
+++ b/Makefile.vc6
@@ -2,7 +2,7 @@
CXX = cl.exe
CFLAGS = -O2 -GA -W3 -DUNICODE -D_UNICODE -D_WIN32=0x0501 -D_WIN32_WINNT=0x0501 -D_WIN32_IE=0x0501 -nologo
-LDFLAGS = /link kernel32.lib user32.lib comctl32.lib shell32.lib gdi32.lib version.lib
+LDFLAGS = /link kernel32.lib user32.lib comctl32.lib shell32.lib gdi32.lib version.lib rpcrt4.lib
out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj
$(CXX) $(CFLAGS) -Fe$@ $** $(LDFLAGS)
diff --git a/alf/alf.cpp b/alf/alf.cpp
index 78eed99..fbc7822 100644
--- a/alf/alf.cpp
+++ b/alf/alf.cpp
@@ -1,5 +1,7 @@
#include "alfpriv.h"
+#include <rpc.h>
+
/* ALF App and Window */
static void
@@ -527,13 +529,33 @@ ALF_RegisterWindowClass(ALFAPP app, const ALFWindowClassParams *params)
WNDCLASS cls;
ZeroMemory(&cls, sizeof(cls));
- // TODO: autogenerate class name
+ const TCHAR *classNamePtr = params->className;
+ TCHAR classNameBuf[256];
+ if (!classNamePtr) {
+ ZeroMemory(classNameBuf, sizeof(classNameBuf));
+ classNamePtr = classNameBuf;
+
+ UUID uuid;
+ UuidCreate(&uuid);
+
+#ifdef UNICODE
+ unsigned short *uuidstr = NULL;
+#else
+ unsigned char *uuidstr = NULL;
+#endif
+ UuidToString(&uuid, &uuidstr);
+
+ lstrcpy(classNameBuf, TEXT("ALFWindow."));
+ lstrcat(classNameBuf, (LPCTSTR)uuidstr);
+
+ RpcStringFree(&uuidstr);
+ }
cls.style = params->classStyle;
cls.hInstance = app->hInstance;
cls.hCursor = LoadCursor(NULL, (LPTSTR)IDC_ARROW);
cls.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
- cls.lpszClassName = params->className;
+ cls.lpszClassName = classNamePtr;
cls.cbWndExtra = sizeof(void*);
cls.cbClsExtra = sizeof(void*)*2;
cls.lpfnWndProc = DefWindowProc;
diff --git a/alf/alf.h b/alf/alf.h
index 6730445..5f7ce61 100644
--- a/alf/alf.h
+++ b/alf/alf.h
@@ -47,7 +47,7 @@ typedef struct {
#define ALF_WM_APPLYSIZE (ALF_WM__BASE + 12)
typedef struct {
- const WCHAR *className;
+ const TCHAR *className;
UINT classStyle;
ALFWindowVTable vtbl;
} ALFWindowClassParams;
diff --git a/makemakefile.sh b/makemakefile.sh
index 9f182d5..cfeb0b1 100755
--- a/makemakefile.sh
+++ b/makemakefile.sh
@@ -13,7 +13,7 @@ ALF_VC6_OBJECTS=$(for i in $ALF_SOURCES; do printf ' out/%s.obj' "$(basename "$i
printf '\n'
printf 'CXX = i686-w64-mingw32-c++\n'
printf 'CFLAGS = -std=c++98 -Wall -Wextra -mwindows -municode -DUNICODE -D_UNICODE -fno-exceptions -fno-rtti -gstabs\n'
- printf 'LDFLAGS = -luser32 -lcomctl32 -lshell32 -lversion -static\n'
+ printf 'LDFLAGS = -luser32 -lcomctl32 -lshell32 -lrpcrt4 -lversion -static\n'
printf '\n'
printf 'out/widgetfactory.exe: out/widgetfactory.o %s\n' "$ALF_MINGW_OBJECTS"
printf '\t$(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)\n'
@@ -37,7 +37,7 @@ ALF_VC6_OBJECTS=$(for i in $ALF_SOURCES; do printf ' out/%s.obj' "$(basename "$i
printf '\n'
printf 'CXX = cl.exe\n'
printf 'CFLAGS = -O2 -GA -W3 -DUNICODE -D_UNICODE -D_WIN32=0x0501 -D_WIN32_WINNT=0x0501 -D_WIN32_IE=0x0501 -nologo\n'
- printf 'LDFLAGS = /link kernel32.lib user32.lib comctl32.lib shell32.lib gdi32.lib version.lib\n'
+ printf 'LDFLAGS = /link kernel32.lib user32.lib comctl32.lib shell32.lib gdi32.lib version.lib rpcrt4.lib\n'
printf '\n'
printf 'out/widgetfactory.exe: out/widgetfactory.obj %s\n' "$ALF_VC6_OBJECTS"
diff --git a/widgetfactory.cpp b/widgetfactory.cpp
index a6c4a81..631326c 100644
--- a/widgetfactory.cpp
+++ b/widgetfactory.cpp
@@ -62,14 +62,14 @@ wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCm
ALFWindowClassParams cparams;
ZeroMemory(&cparams, sizeof(cparams));
- cparams.className = TEXT("DummyClass");
+ //cparams.className = TEXT("DummyClass");
cparams.vtbl.message = handleMessage;
ALFAPP app = ALF_CreateApplication(hInstance);
- ALF_RegisterWindowClass(app, &cparams);
+ LPCTSTR clazz = ALF_RegisterWindowClass(app, &cparams);
- HWND win = ALF_InstantiateWindow(app, TEXT("DummyClass"), NULL, NULL);
+ HWND win = ALF_InstantiateWindow(app, clazz, NULL, NULL);
ALF_AddLabel(win, ID_LBL2, 1, 0, L"Hello, 2!\nblub");