int GLcreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { PIXsize_t ps; DWORD wflags; char *s; int ai; if (!parent) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } wflags = WS_CHILDWINDOW; WLU->func = NULL; ps.x = ps.y = MINLWSIZE; s = ""; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINLWSIZE); break; case G_ATTRBORDERWIDTH: wflags |= WS_BORDER; break; case G_ATTRTEXT: s = attrp[ai].u.t; break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTREVENTCB: WLU->func = attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } Gadjustwrect (parent, &ps); if (!(widget->w = CreateWindow ( "LabelClass", s, wflags, 0, 0, ps.x, ps.y, parent->w, (HMENU) (widget - &Gwidgets[0]), hinstance, NULL ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } ShowWindow (widget->w, SW_SHOW); UpdateWindow (widget->w); if (parent && parent->type == G_ARRAYWIDGET) Gawinsertchild (parent, widget); return 0; }
int GAcreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { PIXsize_t ps; DWORD wflags; int mode, ai; if (!parent) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } wflags = WS_CHILDWINDOW; mode = G_AWVARRAY; WAU->func = NULL; ps.x = ps.y = MINAWSIZE; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINAWSIZE); break; case G_ATTRBORDERWIDTH: wflags |= WS_BORDER; break; case G_ATTRMODE: if (strcmp ("horizontal", attrp[ai].u.t) == 0) mode = G_AWHARRAY; else if (strcmp ("vertical", attrp[ai].u.t) == 0) mode = G_AWVARRAY; else { Gerr (POS, G_ERRBADATTRVALUE, attrp[ai].u.t); return -1; } break; case G_ATTRLAYOUT: if (strcmp ("on", attrp[ai].u.t) == 0) { Gawsetmode (widget, FALSE); WAU->mode = G_AWHARRAY; } else if (strcmp ("off", attrp[ai].u.t) == 0) { Gawsetmode (widget, TRUE); WAU->mode = G_AWHARRAY; } else { Gerr (POS, G_ERRBADATTRVALUE, attrp[ai].u.t); return -1; } break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTRRESIZECB: WAU->func = attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } Gawinitialize (widget, mode); Gadjustwrect (parent, &ps); if (!(widget->w = CreateWindow ( "ArrayClass", "array", wflags, 0, 0, ps.x, ps.y, parent->w, (HMENU) (widget - &Gwidgets[0]), hinstance, NULL ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } ShowWindow (widget->w, SW_SHOW); UpdateWindow (widget->w); if (parent && parent->type == G_ARRAYWIDGET) Gawinsertchild (parent, widget); return 0; }