summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Kümmerlin <jonas@kuemmerlin.eu>2019-01-09 20:52:10 +0100
committerJonas Kümmerlin <jonas@kuemmerlin.eu>2019-01-09 20:52:10 +0100
commit9279dd93c3997a51b227d3380b4da659fcbdff96 (patch)
tree4b2b5880e5062a829e1c3018718b10154af54ebc
parenteb706aae8bf5659a8aae37db31f88c3b605b8b1f (diff)
add spacer widget
-rw-r--r--Makefile.mingw5
-rw-r--r--Makefile.vc65
-rw-r--r--Makefile.vc6-ansi5
-rw-r--r--Makefile.vc6-ansi-315
-rw-r--r--Makefile.vc6-nt315
-rw-r--r--alf/alf.cpp2
-rw-r--r--alf/alf.h4
-rw-r--r--alf/alfpriv.h4
-rw-r--r--alf/alfspacer.cpp58
-rw-r--r--widgetfactory.cpp1
10 files changed, 89 insertions, 5 deletions
diff --git a/Makefile.mingw b/Makefile.mingw
index 60ef928..ce71482 100644
--- a/Makefile.mingw
+++ b/Makefile.mingw
@@ -4,7 +4,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
-out/widgetfactory.exe: out/widgetfactory.o out/alfbutton.o out/alfcombobox.o out/alfcompat.o out/alf.o out/alfdpiaware.o out/alfedit.o out/alflabel.o out/alflayout.o out/alfpanel.o
+out/widgetfactory.exe: out/widgetfactory.o out/alfbutton.o out/alfcombobox.o out/alfcompat.o out/alf.o out/alfdpiaware.o out/alfedit.o out/alflabel.o out/alflayout.o out/alfpanel.o out/alfspacer.o
$(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)
out/alfbutton.o: alf/alfbutton.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
@@ -34,6 +34,9 @@ out/alflayout.o: alf/alflayout.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h al
out/alfpanel.o: alf/alfpanel.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
$(CXX) $(CFLAGS) -c -o $@ $<
+out/alfspacer.o: alf/alfspacer.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
+ $(CXX) $(CFLAGS) -c -o $@ $<
+
out/widgetfactory.o: widgetfactory.cpp alf/alf.h
$(CXX) $(CFLAGS) -c -o $@ $<
diff --git a/Makefile.vc6 b/Makefile.vc6
index 1b63325..d0a1917 100644
--- a/Makefile.vc6
+++ b/Makefile.vc6
@@ -4,7 +4,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 unicows.lib kernel32.lib user32.lib comctl32.lib shell32.lib gdi32.lib version.lib
-out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcombobox.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj out/alflayout.obj out/alfpanel.obj
+out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcombobox.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj out/alflayout.obj out/alfpanel.obj out/alfspacer.obj
$(CXX) $(CFLAGS) -Fe$@ $** $(LDFLAGS)
out/alfbutton.obj: alf/alfbutton.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
@@ -34,6 +34,9 @@ out/alflayout.obj: alf/alflayout.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h
out/alfpanel.obj: alf/alfpanel.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
$(CXX) $(CFLAGS) -c -Fo$@ alf/alfpanel.cpp
+out/alfspacer.obj: alf/alfspacer.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
+ $(CXX) $(CFLAGS) -c -Fo$@ alf/alfspacer.cpp
+
out/widgetfactory.obj: widgetfactory.cpp alf/alf.h
$(CXX) $(CFLAGS) -c -Fo$@ widgetfactory.cpp
diff --git a/Makefile.vc6-ansi b/Makefile.vc6-ansi
index 9d71e82..cdfe885 100644
--- a/Makefile.vc6-ansi
+++ b/Makefile.vc6-ansi
@@ -4,7 +4,7 @@ CXX = cl.exe
CFLAGS = -O2 -GA -W3 -D_WIN32=0x0501 -D_WIN32_WINNT=0x0501 -D_WIN32_IE=0x0501 -nologo
LDFLAGS = /link /entry:_entry kernel32.lib user32.lib comctl32.lib shell32.lib gdi32.lib version.lib
-out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcombobox.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj out/alflayout.obj out/alfpanel.obj
+out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcombobox.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj out/alflayout.obj out/alfpanel.obj out/alfspacer.obj
$(CXX) $(CFLAGS) -Fe$@ $** $(LDFLAGS)
out/alfbutton.obj: alf/alfbutton.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
@@ -34,6 +34,9 @@ out/alflayout.obj: alf/alflayout.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h
out/alfpanel.obj: alf/alfpanel.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
$(CXX) $(CFLAGS) -c -Fo$@ alf/alfpanel.cpp
+out/alfspacer.obj: alf/alfspacer.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
+ $(CXX) $(CFLAGS) -c -Fo$@ alf/alfspacer.cpp
+
out/widgetfactory.obj: widgetfactory.cpp alf/alf.h
$(CXX) $(CFLAGS) -c -Fo$@ widgetfactory.cpp
diff --git a/Makefile.vc6-ansi-31 b/Makefile.vc6-ansi-31
index dfc9269..0bc3c46 100644
--- a/Makefile.vc6-ansi-31
+++ b/Makefile.vc6-ansi-31
@@ -4,7 +4,7 @@ CXX = cl.exe
CFLAGS = -O2 -GA -W3 -D_WIN32=0x0501 -D_WIN32_WINNT=0x0501 -D_WIN32_IE=0x0501 -nologo
LDFLAGS = /link /subsystem:windows,3.10 /entry:_entry /fixed:no kernel32.lib user32.lib comctl32.lib shell32.lib gdi32.lib version.lib
-out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcombobox.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj out/alflayout.obj out/alfpanel.obj
+out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcombobox.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj out/alflayout.obj out/alfpanel.obj out/alfspacer.obj
$(CXX) $(CFLAGS) -Fe$@ $** $(LDFLAGS)
out/alfbutton.obj: alf/alfbutton.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
@@ -34,6 +34,9 @@ out/alflayout.obj: alf/alflayout.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h
out/alfpanel.obj: alf/alfpanel.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
$(CXX) $(CFLAGS) -c -Fo$@ alf/alfpanel.cpp
+out/alfspacer.obj: alf/alfspacer.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
+ $(CXX) $(CFLAGS) -c -Fo$@ alf/alfspacer.cpp
+
out/widgetfactory.obj: widgetfactory.cpp alf/alf.h
$(CXX) $(CFLAGS) -c -Fo$@ widgetfactory.cpp
diff --git a/Makefile.vc6-nt31 b/Makefile.vc6-nt31
index 63a0f80..3e92b92 100644
--- a/Makefile.vc6-nt31
+++ b/Makefile.vc6-nt31
@@ -4,7 +4,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 /subsystem:windows,3.10 /entry:_entry kernel32.lib user32.lib comctl32.lib shell32.lib gdi32.lib version.lib
-out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcombobox.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj out/alflayout.obj out/alfpanel.obj
+out/widgetfactory.exe: out/widgetfactory.obj out/alfbutton.obj out/alfcombobox.obj out/alfcompat.obj out/alf.obj out/alfdpiaware.obj out/alfedit.obj out/alflabel.obj out/alflayout.obj out/alfpanel.obj out/alfspacer.obj
$(CXX) $(CFLAGS) -Fe$@ $** $(LDFLAGS)
out/alfbutton.obj: alf/alfbutton.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
@@ -34,6 +34,9 @@ out/alflayout.obj: alf/alflayout.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h
out/alfpanel.obj: alf/alfpanel.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
$(CXX) $(CFLAGS) -c -Fo$@ alf/alfpanel.cpp
+out/alfspacer.obj: alf/alfspacer.cpp alf/alfcompat.h alf/alf.h alf/alflayout.h alf/alflist.h alf/alfpriv.h
+ $(CXX) $(CFLAGS) -c -Fo$@ alf/alfspacer.cpp
+
out/widgetfactory.obj: widgetfactory.cpp alf/alf.h
$(CXX) $(CFLAGS) -c -Fo$@ widgetfactory.cpp
diff --git a/alf/alf.cpp b/alf/alf.cpp
index 64b4cc4..6f8d28a 100644
--- a/alf/alf.cpp
+++ b/alf/alf.cpp
@@ -343,6 +343,7 @@ ALF_CreateApplication(HINSTANCE hInstance)
ALF_RegisterComboClass(app);
ALF_RegisterPanelClass(app);
+ ALF_RegisterSpacerClass(app);
return app;
}
@@ -352,6 +353,7 @@ ALF_TeardownApplication(ALFAPP app)
{
UnregisterClass(app->comboClass, app->hInstance);
UnregisterClass(app->panelClass, app->hInstance);
+ UnregisterClass(app->spacerClass, app->hInstance);
HeapFree(GetProcessHeap(), 0, app);
}
diff --git a/alf/alf.h b/alf/alf.h
index 79883be..0c32a20 100644
--- a/alf/alf.h
+++ b/alf/alf.h
@@ -250,6 +250,10 @@ ALF_ComboBoxSetText(HWND combo, const TCHAR *text);
HWND
ALF_AddPanel(HWND parent, WORD id, UINT x, UINT y);
+// spacer
+HWND
+ALF_AddSpacer(HWND parent, WORD id, UINT x, UINT y, UINT cptWidth, UINT cptHeight, DWORD layoutFlags);
+
#ifdef __cplusplus
} // extern C
#endif
diff --git a/alf/alfpriv.h b/alf/alfpriv.h
index ec7a447..775d421 100644
--- a/alf/alfpriv.h
+++ b/alf/alfpriv.h
@@ -32,6 +32,7 @@ struct ALFAppPriv {
HINSTANCE hInstance;
TCHAR *comboClass;
TCHAR *panelClass;
+ TCHAR *spacerClass;
};
int
@@ -50,6 +51,9 @@ void
ALF_RegisterPanelClass(ALFAPP app);
void
+ALF_RegisterSpacerClass(ALFAPP app);
+
+void
ALF_BuildRandomClassName(const TCHAR *prefix, TCHAR *buf, DWORD cchBuf);
BOOL
diff --git a/alf/alfspacer.cpp b/alf/alfspacer.cpp
new file mode 100644
index 0000000..545dfbc
--- /dev/null
+++ b/alf/alfspacer.cpp
@@ -0,0 +1,58 @@
+#include "alfpriv.h"
+
+void
+ALF_RegisterSpacerClass(ALFAPP app)
+{
+ WNDCLASS cls;
+ ZeroMemory(&cls, sizeof(cls));
+
+ TCHAR classNameBuf[256];
+ ALF_BuildRandomClassName(TEXT("ALFSpacer"), classNameBuf, 256);
+
+ cls.hInstance = app->hInstance;
+ cls.hCursor = LoadCursor(NULL, (LPTSTR)IDC_ARROW);
+ if (LOBYTE(LOWORD(GetVersion())) >= 4) {
+ cls.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
+ } else {
+ // NT 3.x has white dialog backgrounds
+ cls.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
+ }
+ cls.lpszClassName = classNameBuf;
+ cls.cbWndExtra = sizeof(void*);
+ cls.lpfnWndProc = DefWindowProc;
+
+ ATOM classatom = RegisterClass(&cls);
+ if (!classatom)
+ MessageBox(NULL, TEXT("FATAL: Could not register spacer class"), NULL, MB_OK);
+
+ app->spacerClass = MAKEINTATOM(classatom);
+}
+
+HWND
+ALF_AddSpacer(HWND parent, WORD id, UINT x, UINT y, UINT cptWidth, UINT cptHeight, DWORD layoutFlags)
+{
+ ALFAPP app = ALF_ApplicationFromWindow(parent);
+
+ HWND hwndSpacer = CreateWindowEx(0,
+ app->spacerClass,
+ TEXT(""),
+ WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,
+ 0, 0, 0, 0,
+ parent,
+ (HMENU)(int)id,
+ (HINSTANCE)GetWindowLongPtr(parent, GWLP_HINSTANCE),
+ (void*)app);
+
+ ALFWidgetLayoutParams p;
+ ZeroMemory(&p, sizeof(p));
+ p.hwnd = hwndSpacer;
+ p.x = x;
+ p.y = y;
+ p.width = cptWidth;
+ p.height = cptHeight;
+ p.flags = layoutFlags;
+
+ ALF_AddWidgetEx(parent, &p);
+
+ return hwndSpacer;
+}
diff --git a/widgetfactory.cpp b/widgetfactory.cpp
index aa490d6..d973aac 100644
--- a/widgetfactory.cpp
+++ b/widgetfactory.cpp
@@ -162,6 +162,7 @@ WinMain
ALF_AddButton(panel, ID_BC1, 0, 0, TEXT("1"));
ALF_AddButton(panel, ID_BC2, 1, 0, TEXT("2"));
ALF_AddButton(panel, ID_BC3, 2, 0, TEXT("3"));
+ ALF_AddSpacer(panel, (WORD)-1, 0, 1, 5000, 0, ALF_VEXPAND);
ALF_ApplyFonts(win);
ALF_RecalculateLayout(win);