From: S. K. <ch...@ll...> - 2014-05-10 18:29:42
|
北川です。 Kouhei Sutou <ko...@co...> wrote: (2014/05/10 22:16) >>>Windows環境がないのでデバッグできないんですけど、 >>> >>>https://git.gnome.org/browse/gtk+/tree/gtk/gtkwin32theme.c#n117 >>> >>> is_app_themed = (IsAppThemedFunc) GetProcAddress (uxtheme_dll, "IsAppThemed"); >>> >>>か >>> >>>https://git.gnome.org/browse/gtk+/tree/gtk/gtkwin32theme.c#n120 >>> >>> is_theme_active = (IsThemeActiveFunc) GetProcAddress (uxtheme_dll, "IsThemeActive"); >>> >>>がFALSEになっているのが悪い気がするんですよねぇ。 >> >> この2つのWin32APIをWindowsのRubyでテーマ別に実行しただけの結果って >> 意味無いですか? とりあえずこれならすぐに出せるのですが。 > >あ、すぐに出せるならおねがいします! 了解です。こんな感じになります。 # 使ったコード require 'fiddle/import' #require 'gtk3' #require 'gtk2' module IsAppThemed extend Fiddle::Importer dlload 'uxtheme.dll' extern 'int IsAppThemed()' end p IsAppThemed.IsAppThemed module IsThemeActive extend Fiddle::Importer dlload 'uxtheme.dll' extern 'int IsThemeActive()' end p IsThemeActive.IsThemeActive #---------ここまで このコードを、2種類のWindowsテーマごとにgtk2、gtk3どちらかをrequire した場合とどちらもrequireしない場合に分けて実行してみました。 ちなみにWindows7のGUIにはAeroという機能があり、これをオンにしたタイプ のテーマもあるのですが、このAero系テーマでは下の結果にある「Windows7 ベーシック」と同じ結果になるようです。 (この前のメールではちょっと間違ったことを書いてしまったのですが、 Windows7 のデフォルトのテーマはAero系テーマだったと思います) [[ 実行結果 ]] 「Windows7 ベーシック」の時に、 require 'gtk3'した場合。 IsAppThemed #-> true (1) IsThemeActive #-> true (1) require 'gtk2'した場合。 IsAppThemed #-> true (1) IsThemeActive #-> true (1) どちらもrequire しなかった場合。 IsAppThemed #-> false (0) IsThemeActive #-> true (1) Windows クラシック(9x風)の時に、 require 'gtk3'した場合。 IsAppThemed #-> false (0) IsThemeActive #-> false (0) require 'gtk2'した場合。 IsAppThemed #-> false (0) IsThemeActive #-> false (0) どちらもrequire しなかった場合。 IsAppThemed #-> false (0) IsThemeActive #-> false (0) 以上です。 |