<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">\r
<DebugSymbols>true</DebugSymbols>\r
<OutputPath>bin\x86\Debug\</OutputPath>\r
- <DefineConstants>TRACE;DEBUG;TEST_ENGLISH_ TEST_Direct3D9Ex_</DefineConstants>\r
+ <DefineConstants>TRACE;DEBUG;TEST_ENGLISH_ TEST_Direct3D9Ex_ WindowedFullscreen</DefineConstants>\r
<DebugType>full</DebugType>\r
<PlatformTarget>x86</PlatformTarget>\r
<ErrorReport>prompt</ErrorReport>\r
\r
public void t全画面・ウィンドウモード切り替え()\r
{\r
+#if WindowedFullscreen\r
+ if ( ConfigIni != null )\r
+#else\r
DeviceSettings settings = base.GraphicsDeviceManager.CurrentSettings.Clone();\r
if ( ( ConfigIni != null ) && ( ConfigIni.bウィンドウモード != settings.Windowed ) )\r
- //if ( ConfigIni != null )\r
+#endif\r
{\r
+#if !WindowedFullscreen\r
settings.Windowed = ConfigIni.bウィンドウモード;\r
+#endif\r
if ( ConfigIni.bウィンドウモード == false ) // #23510 2010.10.27 yyagi: backup current window size before going fullscreen mode\r
{\r
currentClientSize = this.Window.ClientSize;\r
ConfigIni.nウインドウwidth = this.Window.ClientSize.Width;\r
ConfigIni.nウインドウheight = this.Window.ClientSize.Height;\r
+// FDK.CTaskBar.ShowTaskBar( false );\r
}\r
+#if !WindowedFullscreen\r
base.GraphicsDeviceManager.ChangeDevice( settings );\r
+#endif\r
if ( ConfigIni.bウィンドウモード == true ) // #23510 2010.10.27 yyagi: to resume window size from backuped value\r
{\r
+#if WindowedFullscreen\r
// #30666 2013.2.2 yyagi Don't use Fullscreen mode becasue NVIDIA GeForce is\r
// tend to delay drawing on Fullscreen mode. So DTXMania uses Maximized window\r
// in spite of using fullscreen mode.\r
- //app.Window.WindowState = FormWindowState.Normal;\r
- //app.Window.FormBorderStyle = FormBorderStyle.Sizable;\r
- //app.Window.WindowState = FormWindowState.Normal;\r
-\r
+ app.Window.WindowState = FormWindowState.Normal;\r
+ app.Window.FormBorderStyle = FormBorderStyle.Sizable;\r
+ app.Window.WindowState = FormWindowState.Normal;\r
+#endif\r
base.Window.ClientSize =\r
new Size( currentClientSize.Width, currentClientSize.Height );\r
- }\r
+// FDK.CTaskBar.ShowTaskBar( true );\r
+ }\r
+#if WindowedFullscreen\r
else \r
{\r
- //app.Window.WindowState = FormWindowState.Normal;\r
- //app.Window.FormBorderStyle = FormBorderStyle.None;\r
- //app.Window.WindowState = FormWindowState.Maximized;\r
- }\r
- //if ( ConfigIni.bウィンドウモード )\r
- //{\r
- // if ( !this.bマウスカーソル表示中 )\r
- // {\r
- // Cursor.Show();\r
- // this.bマウスカーソル表示中 = true;\r
- // }\r
- //}\r
- //else if ( this.bマウスカーソル表示中 )\r
- //{\r
- // Cursor.Hide();\r
- // this.bマウスカーソル表示中 = false;\r
- //}\r
+ app.Window.WindowState = FormWindowState.Normal;\r
+ app.Window.FormBorderStyle = FormBorderStyle.None;\r
+ app.Window.WindowState = FormWindowState.Maximized;\r
+ }\r
+ if ( ConfigIni.bウィンドウモード )\r
+ {\r
+ if ( !this.bマウスカーソル表示中 )\r
+ {\r
+ Cursor.Show();\r
+ this.bマウスカーソル表示中 = true;\r
+ }\r
+ }\r
+ else if ( this.bマウスカーソル表示中 )\r
+ {\r
+ Cursor.Hide();\r
+ this.bマウスカーソル表示中 = false;\r
+ }\r
+#endif\r
}\r
}\r
\r
base.Window.Location = new Point(ConfigIni.n初期ウィンドウ開始位置X, ConfigIni.n初期ウィンドウ開始位置Y); // #30675 2013.02.04 ikanick add\r
\r
base.Window.ClientSize = new Size(ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight); // #34510 yyagi 2010.10.31 to change window size got from Config.ini\r
+#if !WindowedFullscreen\r
if (!ConfigIni.bウィンドウモード) // #23510 2010.11.02 yyagi: add; to recover window size in case bootup with fullscreen mode\r
{ // #30666 2013.02.02 yyagi: currentClientSize should be always made\r
+#endif\r
currentClientSize = new Size( ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight );\r
+#if !WindowedFullscreen\r
}\r
+#endif\r
base.Window.MaximizeBox = true; // #23510 2010.11.04 yyagi: to support maximizing window\r
base.Window.FormBorderStyle = FormBorderStyle.Sizable; // #23510 2010.10.27 yyagi: changed from FixedDialog to Sizable, to support window resize\r
// #30666 2013.02.02 yyagi: moved the code to t全画面・ウインドウモード切り替え()\r
#region [ Direct3D9 デバイスの生成 ]\r
//---------------------\r
DeviceSettings settings = new DeviceSettings();\r
+#if WindowedFullscreen\r
+ settings.Windowed = true; // #30666 2013.2.2 yyagi: Fullscreenmode is "Maximized window" mode\r
+#else\r
settings.Windowed = ConfigIni.bウィンドウモード;\r
- //settings.Windowed = true; // #30666 2013.2.2 yyagi: Fullscreenmode is "Maximized window" mode\r
+#endif\r
settings.BackBufferWidth = SampleFramework.GameWindowSize.Width;\r
settings.BackBufferHeight = SampleFramework.GameWindowSize.Height;\r
// settings.BackBufferCount = 3;\r
base.Window.ClientSize = new Size(ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight); // #23510 2010.10.31 yyagi: to recover window size. width and height are able to get from Config.ini.\r
base.InactiveSleepTime = TimeSpan.FromMilliseconds((float)(ConfigIni.n非フォーカス時スリープms)); // #23568 2010.11.3 yyagi: to support valiable sleep value when !IsActive\r
// #23568 2010.11.4 ikanick changed ( 1 -> ConfigIni )\r
- //this.t全画面・ウィンドウモード切り替え(); // #30666 2013.2.2 yyagi: finalize settings for "Maximized window mode"\r
+#if WindowedFullscreen\r
+ this.t全画面・ウィンドウモード切り替え(); // #30666 2013.2.2 yyagi: finalize settings for "Maximized window mode"\r
+#endif\r
actFlushGPU = new CActFlushGPU();\r
//---------------------\r
#endregion\r
{ \r
ESoundDeviceType soundDeviceType;\r
switch ( CDTXMania.ConfigIni.nSoundDeviceType )\r
- {\r
+ {\r
case 0:\r
soundDeviceType = ESoundDeviceType.DirectSound;\r
break;\r
default:\r
soundDeviceType = ESoundDeviceType.Unknown;\r
break;\r
- }\r
+ }\r
Sound管理 = new CSound管理( base.Window.Handle,\r
soundDeviceType,\r
CDTXMania.ConfigIni.nWASAPIBufferSizeMs,\r
<Compile Include="コード\04.グラフィック\BitmapUtil.cs" />\r
<Compile Include="コード\04.グラフィック\CAero.cs" />\r
<Compile Include="コード\04.グラフィック\CAvi.cs" />\r
+ <Compile Include="コード\04.グラフィック\CTaskBar.cs" />\r
<Compile Include="コード\04.グラフィック\頂点フォーマット%28Vertex%29\ColoredVertex.cs" />\r
<Compile Include="コード\04.グラフィック\CTexture.cs" />\r
<Compile Include="コード\04.グラフィック\CTextureCreateFailedException.cs" />\r
--- /dev/null
+using System;\r
+using System.Collections.Generic;\r
+using System.Text;\r
+using System.Reflection;\r
+using System.Windows.Forms;\r
+using System.Runtime.InteropServices;\r
+\r
+namespace FDK\r
+{\r
+ // referenced from http://dalmore.blog7.fc2.com/blog-entry-34.html\r
+\r
+ public static class CTaskBar\r
+ {\r
+ public static void ShowTaskBar( bool bShowTaskBar )\r
+ {\r
+ Int32 hWnd1 = FindWindow( "Shell_TrayWnd", null );\r
+ if( hWnd1 != 0 )\r
+ { //タスクバーの表示\r
+ if ( bShowTaskBar )\r
+ {\r
+ ShowWindow( hWnd1, TASKBAR_SHOW ); //// タスクバーを常に表示\r
+ }\r
+ else\r
+ {\r
+ ShowWindow( hWnd1, TASKBAR_HIDE );\r
+ }\r
+ APPBARDATA pData = new APPBARDATA();\r
+ pData.cbSize = Marshal.SizeOf( pData );\r
+ pData.hWnd = (IntPtr)hWnd1;\r
+ pData.lParam = (int)ABMsg.ABM_NEW; //REMOVEにするとオートハイドになる\r
+ //タスクバーにメッセージ送信\r
+ SHAppBarMessage( ABMsg.ABM_SETSTATE, ref pData );\r
+ }\r
+\r
+ Int32 hWnd2 = FindWindow( "Button", "スタート" );\r
+ if ( hWnd2 != 0 )\r
+ { //タスクバーの表示\r
+ if ( bShowTaskBar )\r
+ {\r
+ ShowWindow( hWnd2, TASKBAR_SHOW ); //// タスクバーを常に表示\r
+ }\r
+ else\r
+ {\r
+ ShowWindow( hWnd2, TASKBAR_HIDE );\r
+ }\r
+ APPBARDATA pData = new APPBARDATA();\r
+ pData.cbSize = Marshal.SizeOf( pData );\r
+ pData.hWnd = (IntPtr) hWnd2;\r
+ pData.lParam = (int) ABMsg.ABM_NEW; //REMOVEにするとオートハイドになる\r
+ //タスクバーにメッセージ送信\r
+ SHAppBarMessage( ABMsg.ABM_SETSTATE, ref pData );\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// ABMsg 送るAppBarメッセージの識別子(以下のいずれか1つ)\r
+ /// ・ABM_ACTIVATE---AppBarがアクティブになった事をシステムに通知\r
+ /// ・ABM_GETAUTOHIDEBAR---スクリーンの特定の端に関連付けられているオートハイドAppBarのハンドルを返す\r
+ /// ・ABM_GETSTATE---タスクバーがオートハイドか常に最前面のどちらの常態にあるかを返す\r
+ /// ・ABM_GETTASKBARPOS---タスクバーの使用領域を返す\r
+ /// ・ABM_NEW---新しいAppBarを登録し、システムが通知に使用するメッセージIDを指定する\r
+ /// ・ABM_QUERYPOS---AppBarのためのサイズとスクリーン位置を要求する\r
+ /// ・ABM_REMOVE---AppBarの登録を削除する\r
+ /// ・ABM_SETAUTOHIDEBAR---スクリーンの端にオートハイドAppBarを登録または削除する\r
+ /// ・ABM_SETPOS---AppBarのサイズとスクリーン座標を設定する\r
+ /// ・ABM_WINDOWPOSCHANGED---AppBarの位置が変更されたことをシステムに通知する\r
+ /// pData: TAppBarData構造体(各フィールドはdwMessageに依存する)\r
+ /// </summary>\r
+ private enum ABMsg : int\r
+ {\r
+ ABM_NEW = 0,\r
+ ABM_REMOVE = 1,\r
+ ABM_QUERYPOS = 2,\r
+ ABM_SETPOS = 3,\r
+ ABM_GETSTATE = 4,\r
+ ABM_GETTASKBARPOS = 5,\r
+ ABM_ACTIVATE = 6,\r
+ ABM_GETAUTOHIDEBAR = 7,\r
+ ABM_SETAUTOHIDEBAR = 8,\r
+ ABM_WINDOWPOSCHANGED = 9,\r
+ ABM_SETSTATE = 10\r
+ }\r
+\r
+ /// <summary>\r
+ /// APPBARDATA SHAppBarMessage関数にて使用されるAppBarに関する構造体。\r
+ /// cbSize.....SizeOf(TAppBarData)\r
+ /// hWnd.....AppBarのハンドル\r
+ /// uCallbackMessage.....任意のメッセージID(hWndのAppBarにメッセージを通知する際(ABM_NEWメッセージを送る際)に使用)\r
+ /// uEdge.....スクリーンの端を指定するフラグ(ABM_GETAUTOHIDEBAR、ABM_QUERYPOS、ABM_SETAUTOHIDEBAR、ABM_SETPOSメッセージを送る際に使用し、以下のいずれか1つ)\r
+ /// ・ABE_BOTTOM---下サイド\r
+ /// ・ABE_LEFT--- 左サイド\r
+ /// ・ABE_RIGHT---右サイド\r
+ /// ・ABE_TOP---上サイド\r
+ /// rc.....AppBarやタスクバーのスクリーン座標での表示領域(ABM_GETTASKBARPOS、ABM_QUERYPOS、ABM_SETPOSメッセージを送る際に使用する)\r
+ /// lParam.....メッセージ依存のパラメータ(ABM_SETAUTOHIDEBARメッセージと共に使用される)\r
+ /// </summary>\r
+ [StructLayout( LayoutKind.Sequential )]\r
+ private struct APPBARDATA\r
+ {\r
+ public int cbSize;\r
+ public IntPtr hWnd;\r
+ public uint uCallbackMessage;\r
+ public ABEdge uEdge;\r
+ public RECT rc;\r
+ public int lParam;\r
+ }\r
+ /// <summary>\r
+ /// ABEdge\r
+ /// </summary>\r
+ private enum ABEdge : int\r
+ {\r
+ ABE_LEFT = 0,\r
+ ABE_TOP = 1,\r
+ ABE_RIGHT = 2,\r
+ ABE_BOTTOM = 3\r
+ }\r
+ /// <summary>\r
+ /// RECT\r
+ /// </summary>\r
+ [StructLayout( LayoutKind.Sequential )]\r
+ private struct RECT\r
+ {\r
+ public int left;\r
+ public int top;\r
+ public int right;\r
+ public int bottom;\r
+ }\r
+ /// <summary>\r
+ /// SHAppBarMessage\r
+ /// </summary>\r
+ /// <param name="dwMessage"></param>\r
+ /// <param name="pData"></param>\r
+ /// <returns></returns>\r
+ [DllImport( "shell32.dll", CallingConvention = CallingConvention.StdCall )]\r
+ private static extern int SHAppBarMessage( ABMsg dwMessage, ref APPBARDATA pData );\r
+\r
+ [DllImport("user32.dll", EntryPoint = "ShowWindow")]\r
+ private static extern int ShowWindow(Int32 hWnd, int nCmdShow);\r
+ private const int TASKBAR_HIDE = 0;\r
+ private const int TASKBAR_SHOW = 5;\r
+\r
+ [DllImport( "user32.dll", EntryPoint = "FindWindow" )]\r
+ private static extern Int32 FindWindow( String lpClassName, String lpWindowName );\r
+ }\r
+}\r