41 lines
1.3 KiB
C
41 lines
1.3 KiB
C
// 7 december 2014
|
|
|
|
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,
|
|
0, 0, 0, 0, // no initial size
|
|
t->hwnd, (HMENU) 100, hInstance, NULL);
|
|
if (t->header == NULL)
|
|
panic("error creating Table header");
|
|
}
|
|
|
|
static void destroyHeader(struct table *t)
|
|
{
|
|
if (DestroyWindow(t->header) == 0)
|
|
panic("error destroying Table header");
|
|
}
|
|
|
|
static void repositionHeader(struct table *t)
|
|
{
|
|
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 = ℘
|
|
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");
|
|
}
|