More Windows uiContainer work.

This commit is contained in:
Pietro Gagliardi 2015-04-27 01:07:46 -04:00
parent 664d6d7dd0
commit 7b8964d87d
1 changed files with 21 additions and 16 deletions

View File

@ -5,20 +5,30 @@
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)
{
uiContainer *c;
CREATESTRUCTW *cs = (CREATESTRUCTW *) lParam;
c = uiContainer(GetWindowLongPtrW(hwnd, GWLP_USERDATA));
if (c == NULL)
if (uMsg == WM_NCCREATE)
SetWindowLongPtrW(hwnd, GWLP_USERDATA, (LONG_PTR) (cs->lpCreateParams));
// DO NOT RETURN DEFWINDOWPROC() HERE
// see the next block of comments as to why
// instead, we simply check if c == NULL again later
switch (uMsg) {
// 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 }
// TODO
// these are only run if c is not NULL
case WM_WINDOWPOSCHANGED:
case msgUpdateChild:
if (c == NULL)
break;
; // TODO
}
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
}
@ -52,12 +62,7 @@ const char *initContainer(void)
return NULL;
}
// TODO document
void uiWindowsMakeContainer(uiContainer *c, const WCHAR *class, BOOL isBin)
{
}
void uiMakeContainer(uiContainer *c)
{
uiWindowsMakeContainer(c, containerClass, FALSE);
// TODO
}