diff options
Diffstat (limited to 'prev/wintable/includethis.h')
| -rw-r--r-- | prev/wintable/includethis.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/prev/wintable/includethis.h b/prev/wintable/includethis.h new file mode 100644 index 0000000..422b101 --- /dev/null +++ b/prev/wintable/includethis.h @@ -0,0 +1,73 @@ +// 17 february 2015 + +#ifndef __GO_UI_WINTABLE_INCLUDETHIS_H__ +#define __GO_UI_WINTABLE_INCLUDETHIS_H__ + +#define tableWindowClass L"gouitable" + +// start at WM_USER + 20 just in case for whatever reason we ever get the various dialog manager messages (see also http://blogs.msdn.com/b/oldnewthing/archive/2003/10/21/55384.aspx) +// each of these returns nothing unless otherwise indicated +enum { + // wParam - one of the type constants + // lParam - column name as a Unicode string + tableAddColumn = WM_USER + 20, + // wParam - 0 + // lParam - pointer to intptr_t containing new count + tableSetRowCount, + // wParam - pointer to intptr_t where selected row will be stored + // lParam - pointer to intptr_t where selected column will be stored + // both will be -1 for no selection + // if either is NULL, that value is not written + tableGetSelection, + // wParam - pointer to intptr_t containing selected row + // lParam - pointer to intptr_t containing selected column + // if lParam is NULL, do not change selected column (selects column 0 if nothing previously selected; TODO explicitly document this?) + // TODO allow wParam to be NULL too; should both being NULL select nothing or keep the current selection? + // this WILL result in a selection changed notification (TODO work into the package ui Table) + tableSetSelection, +}; + +enum { + tableColumnText, + tableColumnImage, + tableColumnCheckbox, + nTableColumnTypes, +}; + +// notification codes +// note that these are positive; see http://blogs.msdn.com/b/oldnewthing/archive/2009/08/21/9877791.aspx +// each of these is of type tableNM +// all fields except data will always be set +enum { + // data parameter is always 0 + // for tableColumnText return should be WCHAR * + // for tableColumnImage return should be HBITMAP + // for tableColumnCheckbox return is nonzero for checked, zero for unchecked + tableNotificationGetCellData, + // data parameter is pointer, same as tableNotificationGetCellData + // not sent for checkboxes + // no return + tableNotificationFinishedWithCellData, + // data is zero + // no return + tableNotificationCellCheckboxToggled, + // sent even on deselection (in that case, row == -1 and column == -1) + // data is zero + // no return + tableNotificationSelectionChanged, +}; + +typedef struct tableNM tableNM; + +struct tableNM { + NMHDR nmhdr; + intptr_t row; + intptr_t column; + int columnType; + uintptr_t data; +}; + +// TODO have hInstance passed in +extern void initTable(void (*panicfunc)(const char *msg, DWORD lastError), BOOL (*WINAPI tme)(LPTRACKMOUSEEVENT)); + +#endif |
