summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wintable/new/draw.h40
-rw-r--r--wintable/new/main.c2
2 files changed, 42 insertions, 0 deletions
diff --git a/wintable/new/draw.h b/wintable/new/draw.h
new file mode 100644
index 0000000..7cd978c
--- /dev/null
+++ b/wintable/new/draw.h
@@ -0,0 +1,40 @@
+// 8 december 2014
+
+static void draw(struct table *t, HDC dc, RECT cliprect, RECT client)
+{
+ Rectangle(dc, 20, 20, 200, 200);
+}
+
+// TODO handle WM_PRINTCLIENT flags?
+
+HANDLER(drawHandlers)
+{
+ HDC dc;
+ PAINTSTRUCT ps;
+ RECT client;
+ RECT r;
+ BOOL wmpaint;
+
+ if (uMsg != WM_PAINT && uMsg != WM_PRINTCLIENT)
+ return FALSE;
+ if (GetClientRect(t->hwnd, &client) == 0)
+ panic("error getting client rect for Table painting");
+ // let's be nice: some controls don't support WM_PRINTCLIENT but do allow you to pass a HDC as the WPARAM to WM_PAINT, so let's support that too as an option
+ // TODO find out how susch controls handle LPARAM
+ wmpaint = uMsg == WM_PAINT && ((HDC) wParam) == NULL;
+ if (wmpaint) {
+ dc = BeginPaint(t->hwnd, &ps);
+ if (dc == NULL)
+ panic("error beginning Table painting");
+ r = ps.rcPaint;
+ } else {
+ dc = (HDC) wParam;
+ r = client;
+ }
+ draw(t, dc, r, client);
+ if (wmpaint)
+ EndPaint(t->hwnd, &ps);
+ // TODO is this correct for WM_PRINTCLIENT? MSDN doesn't say
+ *lResult = 0;
+ return TRUE;
+}
diff --git a/wintable/new/main.c b/wintable/new/main.c
index cc27111..1c097fd 100644
--- a/wintable/new/main.c
+++ b/wintable/new/main.c
@@ -57,11 +57,13 @@ struct table {
#include "header.h"
#include "children.h"
#include "resize.h"
+#include "draw.h"
static const handlerfunc handlers[] = {
eventHandlers,
childrenHandlers,
resizeHandler,
+ drawHandlers,
NULL,
};