libui/new/windows/container.c

64 lines
1.5 KiB
C

// 26 april 2015
#include "uipriv_windows.h"
#define containerClass L"libui_uiContainerClass"
HWND initialParent;
struct container {
HWND hwnd;
intmax_t marginLeft;
intmax_t marginTop;
intmax_t marginRight;
intmax_t marginBottom;
};
static LRESULT CALLBACK containerWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
// these must always be run, even on the initial parent
// why? http://blogs.msdn.com/b/oldnewthing/archive/2010/03/16/9979112.aspx
//TODO switch (uMsg) {
//TODO }
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
}
const char *initContainer(void)
{
WNDCLASSW wc;
ZeroMemory(&wc, sizeof (WNDCLASSW));
wc.lpszClassName = containerClass;
wc.lpfnWndProc = containerWndProc;
wc.hInstance = hInstance;
wc.hIcon = hDefaultIcon;
wc.hCursor = hDefaultCursor;
wc.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1);
if (RegisterClassW(&wc) == 0)
return "registering uiContainer window class";
initialParent = CreateWindowExW(0,
uiOSContainerClass, L"",
WS_OVERLAPPEDWINDOW,
0, 0,
100, 100,
NULL, NULL, hInstance, NULL);
if (initialParent == NULL)
return "creating initial parent window";
// just to be safe, disable the initial parent so it can't be interacted with accidentally
// if this causes issues for our controls, we can remove it
EnableWindow(initialParent, FALSE);
return NULL;
}
// TODO document
void uiWindowsMakeContainer(uiContainer *c, const WCHAR *class, BOOL isBin)
{
}
void uiMakeContainer(uiContainer *c)
{
uiWindowsMakeContainer(c, containerClass, FALSE);
}