⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msw_theme_main.c

📁 This GTK+ version 2.12.3. GTK+ is a multi-platform toolkit for creating graphical user interfaces.
💻 C
字号:
/* MS-Windows Engine (aka GTK-Wimp) * * Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com> * Includes code adapted from redmond95 by Owen Taylor, and * gtk-nativewin by Evan Martin * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */#include <windows.h>#include <gmodule.h>#include "gtk/gtk.h"#include "msw_style.h"#include "msw_rc_style.h"#include "xp_theme.h"#ifndef WM_THEMECHANGED#define WM_THEMECHANGED 0x031A	/* winxp only */#endifstatic GModule *this_module = NULL;static void (*msw_rc_reset_styles) (GtkSettings * settings) = NULL;static GdkWindow* hidden_msg_window = NULL;static GdkWindow*create_hidden_msg_window (void){  GdkWindowAttr attributes;  gint attributes_mask;  attributes.x = -100;  attributes.y = -100;  attributes.width = 10;  attributes.height = 10;  attributes.window_type = GDK_WINDOW_TEMP;  attributes.wclass = GDK_INPUT_ONLY;  attributes.override_redirect = TRUE;  attributes.event_mask = 0;  attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_NOREDIR;  return gdk_window_new (gdk_get_default_root_window (),			 &attributes, attributes_mask);}static GdkFilterReturnglobal_filter_func (void *xevent, GdkEvent * event, gpointer data){    MSG *msg = (MSG *) xevent;    switch (msg->message)	{	    /* catch theme changes */	case WM_THEMECHANGED:	case WM_SYSCOLORCHANGE:	    if (msw_rc_reset_styles != NULL)		{		    xp_theme_reset ();		    msw_style_init ();		    /* force all gtkwidgets to redraw */		    (*msw_rc_reset_styles) (gtk_settings_get_default ());		}	    return GDK_FILTER_REMOVE;	case WM_SETTINGCHANGE:	    /* catch cursor blink, etc... changes */	    msw_style_setup_system_settings ();	    return GDK_FILTER_REMOVE;	default:	    return GDK_FILTER_CONTINUE;	}}G_MODULE_EXPORT voidtheme_init (GTypeModule * module){    msw_rc_style_register_type (module);    msw_style_register_type (module);    /* this craziness is required because only gtk 2.4.x and later have       gtk_rc_reset_styles(). But we want to be able to run acceptly well on       any GTK 2.x.x platform. */    if (gtk_check_version (2, 4, 0) == NULL)	{	    this_module = g_module_open (NULL, 0);	    if (this_module)		g_module_symbol (this_module, "gtk_rc_reset_styles",				 (gpointer *) (&msw_rc_reset_styles));	}    msw_style_init ();    hidden_msg_window = create_hidden_msg_window ();    gdk_window_add_filter (hidden_msg_window, global_filter_func, NULL);}G_MODULE_EXPORT voidtheme_exit (void){    gdk_window_remove_filter (hidden_msg_window, global_filter_func, NULL);    gdk_window_destroy (hidden_msg_window);    hidden_msg_window = NULL;    msw_style_finalize();    if (this_module)	{	    g_module_close (this_module);	    this_module = NULL;	}}G_MODULE_EXPORT GtkRcStyle *theme_create_rc_style (void){    return g_object_new (MSW_TYPE_RC_STYLE, NULL);}/* The following function will be called by GTK+ when the module * is loaded and checks to see if we are compatible with the * version of GTK+ that loads us. */G_MODULE_EXPORT const gchar *g_module_check_init (GModule * module){    return gtk_check_version (2, 0, 0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -