static LRESULT WINAPI WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) { Tcl_Interp *interp = (Tcl_Interp *)GetWindowLongPtr(hwnd, GWLP_USERDATA); Ttk_Theme theme; switch (msg) { case WM_DESTROY: break; case WM_SYSCOLORCHANGE: RegisterSystemColors(interp); break; case WM_THEMECHANGED: /* * Reset the application theme to 'xpnative' if present, * which will in turn fall back to 'winnative' if XP theming * is disabled. */ theme = Ttk_GetTheme(interp, "xpnative"); if (theme) { Ttk_UseTheme(interp, theme); /* @@@ What to do about errors here? */ } break; } return DefWindowProc(hwnd, msg, wp, lp); }
/* + style theme use $theme -- * Sets the current theme to $theme */ static int StyleThemeUseCmd( ClientData clientData, /* Master StylePackageData pointer */ Tcl_Interp *interp, /* Current interpreter */ int objc, /* Number of arguments */ Tcl_Obj *const objv[]) /* Argument objects */ { StylePackageData *pkgPtr = clientData; Ttk_Theme theme; if (objc < 3 || objc > 4) { Tcl_WrongNumArgs(interp, 3, objv, "?theme?"); return TCL_ERROR; } if (objc == 3) { return StyleThemeCurrentCmd(clientData, interp, objc, objv); } theme = LookupTheme(interp, pkgPtr, Tcl_GetString(objv[3])); if (!theme) { return TCL_ERROR; } return Ttk_UseTheme(interp, theme); }