#pragma once #include "alf.h" #include "alflist.h" typedef struct { ALFListHeader list; HWND hwnd; UINT x; UINT y; UINT cptWidth; UINT cptHeight; UINT cptMarginTop; UINT cptMarginRight; UINT cptMarginBottom; UINT cptMarginLeft; DWORD flags; } ALFWidgetPriv; typedef struct { int minWidth; int allocatedWidth; int allocatedPosition; int expand : 1; } ALFLayoutRowOrColumn; #define ALF_LAYOUT_NEED_RECALC ((DWORD)1) #define ALF_LAYOUT_NEED_REAPPLY ((DWORD)2) typedef struct { ALFListHeader widgets; ALFLayoutRowOrColumn *columns; ALFLayoutRowOrColumn *rows; int nColumns; int nRows; int totalMinWidth; int totalMinHeight; int expandoColumnCount; int expandoRowCount; DWORD layoutValididityFlags; } ALFLayout; void ALF_Layout_Init(ALFLayout *layout); void ALF_Layout_Clear(ALFLayout *layout); void ALF_Layout_GetMinSize(ALFLayout *layout, HWND window, SIZE *size); void ALF_Layout_Apply(ALFLayout *layout, HWND window); void ALF_Layout_AddWidget(ALFLayout *layout, HWND window, const ALFWidgetLayoutParams *params); BOOL ALF_Layout_RemoveWidget(ALFLayout *layout, HWND window, HWND widget, BOOL destroy); BOOL ALF_Layout_SetWidgetParams(ALFLayout *layout, HWND window, const ALFWidgetLayoutParams *params, HWND widget); BOOL ALF_Layout_GetWidgetParams(ALFLayout *layout, ALFWidgetLayoutParams *params, HWND widget); BOOL ALF_Layout_HandleMessage(ALFLayout *layout, HWND window, UINT msg, WPARAM wparam, LPARAM lparam, LRESULT *ret); HWND ALF_Layout_WidgetAtPos(ALFLayout *layout, UINT x, UINT y); void ALF_Layout_Invalidate(ALFLayout *layout, HWND window); BOOL ALF_Layout_Validate(ALFLayout *layout, HWND window);