OSDN Git Service

フォーラム[#56172] SlimDX(改)のフォルダ内容が不完全だったので再UP。
[dtxmania/dtxmania.git] / SlimDXc_Jun2010(VC++2008) / source / windows / MessagePump.h
1 /*\r
2 * Copyright (c) 2007-2010 SlimDX Group\r
3\r
4 * Permission is hereby granted, free of charge, to any person obtaining a copy\r
5 * of this software and associated documentation files (the "Software"), to deal\r
6 * in the Software without restriction, including without limitation the rights\r
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
8 * copies of the Software, and to permit persons to whom the Software is\r
9 * furnished to do so, subject to the following conditions:\r
10\r
11 * The above copyright notice and this permission notice shall be included in\r
12 * all copies or substantial portions of the Software.\r
13\r
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
20 * THE SOFTWARE.\r
21 */\r
22 #pragma once\r
23 \r
24 namespace SlimDX\r
25 {\r
26         namespace Windows\r
27         {\r
28                 public delegate void MainLoop();\r
29 \r
30                 public ref class MessagePump sealed\r
31                 {\r
32                 private:\r
33                         ref class IdleHandler\r
34                         {\r
35                         private:\r
36                                 MainLoop^ loopDelegate;\r
37 \r
38                         public:\r
39                                 IdleHandler( MainLoop^ mainLoop ) { loopDelegate = mainLoop; }\r
40 \r
41                                 void OnIdle( System::Object^ sender, System::EventArgs^ e )\r
42                                 {\r
43                                         SLIMDX_UNREFERENCED_PARAMETER( sender );\r
44                                         SLIMDX_UNREFERENCED_PARAMETER( e );\r
45 \r
46                                         while( IsApplicationIdle )\r
47                                                 loopDelegate();\r
48                                 }\r
49                         };\r
50 \r
51                         MessagePump() { }\r
52 \r
53                 public:\r
54                         static property bool IsApplicationIdle { bool get(); }\r
55 \r
56                         static void Run( MainLoop^ mainLoop );\r
57                         static void Run( System::Windows::Forms::Form^ form, MainLoop^ mainLoop );\r
58                         static void Run( System::Windows::Forms::ApplicationContext^ context, MainLoop^ mainLoop );\r
59                 };\r
60         }\r
61 }