diff options
Diffstat (limited to 'alf/alf.h')
| -rw-r--r-- | alf/alf.h | 51 |
1 files changed, 50 insertions, 1 deletions
@@ -80,6 +80,7 @@ typedef struct { #define ALF_WM_SETMODALRESULT (ALF_WM__BASE + 7) #define ALF_WM_GETMODALRESULT (ALF_WM__BASE + 8) #define ALF_WM_GETDPI (ALF_WM__BASE + 9) +#define ALF_WM_GETAPPLICATION (ALF_WM__BASE + 10) #define ALF_WM_BACKGROUNDCHANGE (ALF_WM__BASE + 11) #define ALF_WM_APPLYSIZE (ALF_WM__BASE + 12) #define ALF_WM_SETBGCOLOR (ALF_WM__BASE + 13) @@ -301,10 +302,58 @@ ALF_FillRect(HDC dc, const RECT *rc, ALFColor color); void ALF_DestroyWidget(HWND win, WORD id); + +// application + +// an application is a container for multiple top-level windows +// NOTE: ALFApplication is not thread-safe. It must be accessed only from the +// thread that created it, and all toplevels associated with the application +// must live on that same thread. + +typedef struct tagALFApplication ALFApplication; + +ALFApplication * +ALF_CreateApplication(void); + +void +ALF_Application_ProcessMessages(ALFApplication *app); + +// continuously processes messages until a quit message is posted +// or all windows have been destroyed +void +ALF_Application_Run(ALFApplication *app); + +BOOL +ALF_Application_EnumToplevels(ALFApplication *app, WNDENUMPROC proc, LPARAM param); + +HWND +ALF_Application_ActiveToplevel(ALFApplication *app); + +void +ALF_Application_SetPreTranslateMessageHandler(ALFApplication *app, BOOL(*handler)(void *,MSG *), void *closure); + +BOOL +ALF_Application_PreTranslateMessage(ALFApplication *app, MSG *msg, HWND modalToplevel); + +// TODO: implement modal stuff +/*void +ALF_Application_DisableWindowsForModal(ALFApplication *app, HWND skip); + +void +ALF_Application_ReenableWindowsForModal(ALFApplication *app, HWND skip);*/ + +// also destroys all toplevels associated with the application +void +ALF_DestroyApplication(ALFApplication *app); + + // toplevel window HWND -ALF_CreateToplevelWindow(DWORD exstyle, DWORD style, HWND hwndOwner, ALFToplevelVTable *vtbl, void *closure); +ALF_CreateToplevelWindow(DWORD exstyle, DWORD style, HWND hwndOwner, ALFApplication *app, ALFToplevelVTable *vtbl, void *closure); + +ALFApplication * +ALF_Toplevel_Application(HWND toplevel); void ALF_Toplevel_Resize(HWND win, int cptWidth, int cptHeight); |
