2014-11-29 17:29:50 -06:00
|
|
|
// 29 november 2014
|
|
|
|
|
|
|
|
static void addColumn(struct table *t, WPARAM wParam, LPARAM lParam)
|
|
|
|
{
|
|
|
|
HDITEMW item;
|
|
|
|
|
|
|
|
if (((int) wParam) >= nTableColumnTypes)
|
|
|
|
abort();
|
|
|
|
|
|
|
|
t->nColumns++;
|
|
|
|
t->columnTypes = (int *) realloc(t->columnTypes, t->nColumns * sizeof (int));
|
|
|
|
if (t->columnTypes == NULL)
|
|
|
|
abort();
|
|
|
|
t->columnTypes[t->nColumns - 1] = (int) wParam;
|
|
|
|
|
|
|
|
ZeroMemory(&item, sizeof (HDITEMW));
|
|
|
|
item.mask = HDI_WIDTH | HDI_TEXT | HDI_FORMAT;
|
|
|
|
item.cxy = 200; // TODO
|
|
|
|
item.pszText = (WCHAR *) lParam;
|
|
|
|
item.fmt = HDF_LEFT | HDF_STRING;
|
|
|
|
if (SendMessage(t->header, HDM_INSERTITEM, (WPARAM) (t->nColumns - 1), (LPARAM) (&item)) == (LRESULT) (-1))
|
|
|
|
abort();
|
|
|
|
// TODO resize(t)?
|
|
|
|
redrawAll(t);
|
|
|
|
}
|
2014-11-30 20:27:32 -06:00
|
|
|
|
|
|
|
HANDLER(API)
|
|
|
|
{
|
|
|
|
switch (uMsg) {
|
|
|
|
case WM_SETFONT:
|
|
|
|
t->font = (HFONT) wParam;
|
|
|
|
if (t->font == NULL)
|
|
|
|
t->font = t->defaultFont;
|
|
|
|
// also set the header font
|
|
|
|
SendMessageW(t->header, WM_SETFONT, wParam, lParam);
|
|
|
|
if (LOWORD(lParam) != FALSE) {
|
|
|
|
// the scrollbar page size will change so redraw that too
|
|
|
|
// also recalculate the header height
|
|
|
|
// TODO do that when this is FALSE too somehow
|
|
|
|
resize(t);
|
|
|
|
redrawAll(t);
|
|
|
|
}
|
|
|
|
*lResult = 0;
|
|
|
|
return TRUE;
|
|
|
|
case WM_GETFONT:
|
|
|
|
*lResult = (LRESULT) t->font;
|
|
|
|
return TRUE;
|
|
|
|
case tableAddColumn:
|
|
|
|
addColumn(t, wParam, lParam);
|
|
|
|
*lResult = 0;
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|