summaryrefslogtreecommitdiff
path: root/wintable/new/header.h
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-12-07 20:16:58 -0500
committerPietro Gagliardi <[email protected]>2014-12-07 20:16:58 -0500
commit6efc67d7e2163fd19deed4d3d3db37704a367bc4 (patch)
tree45b896408e6dfcf493378b8c67992250acc14558 /wintable/new/header.h
parent399b4639fee23d376691fc1e0123f414f4498fcd (diff)
More header control stuff: resize handling/header control repositioning.
Diffstat (limited to 'wintable/new/header.h')
-rw-r--r--wintable/new/header.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/wintable/new/header.h b/wintable/new/header.h
index 213516a..374aaa4 100644
--- a/wintable/new/header.h
+++ b/wintable/new/header.h
@@ -4,6 +4,7 @@ static void makeHeader(struct table *t, HINSTANCE hInstance)
{
t->header = CreateWindowExW(0,
WC_HEADERW, L"",
+ // don't set WS_VISIBLE; according to MSDN we create the header hidden as part of setting the initial position (http://msdn.microsoft.com/en-us/library/windows/desktop/ff485935%28v=vs.85%29.aspx)
// TODO WS_BORDER?
// TODO is HDS_HOTTRACK needed?
WS_CHILD | HDS_FULLDRAG | HDS_HORZ | HDS_HOTTRACK,
@@ -21,5 +22,19 @@ static void destroyHeader(struct table *t)
static void repositionHeader(struct table *t)
{
- // TODO http://msdn.microsoft.com/en-us/library/windows/desktop/hh298357%28v=vs.85%29.aspx
+ RECT r;
+ WINDOWPOS wp;
+ HDLAYOUT l;
+
+ if (GetClientRect(t->hwnd, &r) == 0)
+ panic("error getting client rect for Table header repositioning");
+ l.prc = &r;
+ l.pwpos = &wp;
+ if (SendMessageW(t->header, HDM_LAYOUT, 0, (LPARAM) (&l)) == FALSE)
+ panic("error getting new Table header position");
+ if (SetWindowPos(t->header, wp.hwndInsertAfter,
+ wp.x, wp.y, wp.cx, wp.cy,
+ // see above on showing the header here instead of in the CreateWindowExW() call
+ wp.flags | SWP_SHOWWINDOW) == 0)
+ panic("error repositioning Table header");
}