#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; typedef struct { ALFListHeader widgets; ALFLayoutRowOrColumn *columns; ALFLayoutRowOrColumn *rows; int nColumns; int nRows; int totalMinWidth; int totalMinHeight; int expandoColumnCount; int expandoRowCount; } ALFLayout; void ALF_Layout_Init(ALFLayout *layout); void ALF_Layout_Clear(ALFLayout *layout); void ALF_Layout_CalcSizes(ALFLayout *layout, HWND window); 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, const ALFWidgetLayoutParams *params, HWND widget); BOOL ALF_Layout_GetWidgetParams(ALFLayout *layout, ALFWidgetLayoutParams *params, HWND widget); BOOL ALF_Layout_HandleMessage(ALFLayout *layout, HWND window, WPARAM wparam, LPARAM lparam); HWND ALF_Layout_WidgetAtPos(ALFLayout *layout, UINT x, UINT y); void ALF_Layout_ApplyFonts(ALFLayout *layout, HWND window, const ALFWindowFonts *fonts);