OSDN Git Service

rm latex/
[moflib/moflib.git] / oldmof / Window.cpp
1 #include "mof/Window.hpp"
2 #include "mof/InputDevice.hpp"
3 #include "mof/ConsoleIO.hpp"
4 #include <stdexcept>
5
6 LRESULT WINAPI wndProc( HWND hWnd , UINT msg, WPARAM wParam, LPARAM lParam)
7 {
8         switch(msg)
9         {
10                 case WM_ACTIVATEAPP:
11                         if(LOWORD(wParam) == 0)
12                         {
13                         /*      *ConsoleOut::getInstance() << "Window\82ª\94ñ\83A\83N\83e\83B\83u\82É\82È\82è\82Ü\82µ\82½" << std::endl;
14                                 mof::System::getInstance()->activate(false);
15                                 mof::InputDevice::getInstance()->activate(false);*/
16                                 mof::InputDevice::setActivation(false);
17                         }
18                         else 
19                         {
20                         /*      *ConsoleOut::getInstance() << "Window\82ª\83A\83N\83e\83B\83u\82É\82È\82è\82Ü\82µ\82½" << std::endl;
21                                 mof::System::getInstance()->activate(true);
22                                 mof::InputDevice::getInstance()->activate(true);*/
23                                 mof::InputDevice::setActivation(true);
24                         }
25                         break;
26                 case WM_DESTROY:
27                         PostQuitMessage(0);
28                         break;
29                 case WM_SETCURSOR:
30                         SetCursor(NULL);
31                         break;
32         }
33         
34         return DefWindowProc( hWnd, msg, wParam, lParam );
35 }
36
37
38
39
40 namespace mof
41 {
42     
43     struct Window::Impl
44     {
45         mof::tstring appName;
46         HINSTANCE hInstance;
47         HWND hWindow;
48         
49         Impl(const mof::tstring& appname , HINSTANCE hInstance );
50     };
51
52     Window::Impl::Impl(const mof::tstring &appname, HINSTANCE hInstance )
53     : appName( appname ) , hInstance( hInstance ) , hWindow( NULL )
54     {
55             // do nothing
56     }   
57
58     Window::Window( const mof::tstring &appname , int width , int height , bool fullscreen )
59     : m_pImpl( new mof::Window::Impl( appname , GetModuleHandle(NULL) ) )
60     {
61
62             // \83E\83B\83\93\83h\83E\83N\83\89\83X\90Ý\92è
63         WNDCLASSEX wc = 
64             { 
65                 sizeof(WNDCLASSEX), CS_CLASSDC, wndProc, 0L, 0L, 
66                 m_pImpl->hInstance , NULL, NULL, NULL, NULL,
67                 m_pImpl->appName.c_str()  , NULL
68             };
69         RegisterClassEx( &wc );
70
71             // \83E\83B\83\93\83h\83E\90\90¬
72             if( !fullscreen )
73             {
74                 // \8ew\92è\82³\82ê\82½\83N\83\89\83C\83A\83\93\83g\97Ì\88æ\82ð\8am\95Û\82·\82é\82½\82ß\82É\95K\97v\82È\83E\83B\83\93\83h\83E\83T\83C\83Y\82ð\93¾\82é
75                 RECT rect_win;
76                 SetRect( &rect_win , 0 , 0 , width , height );
77                 AdjustWindowRect( &rect_win , WS_OVERLAPPEDWINDOW , false );
78             
79                 //Window\83\82\81[\83h
80                 m_pImpl->hWindow = 
81                     CreateWindow
82                     ( 
83                          m_pImpl->appName.c_str() , m_pImpl->appName.c_str() , 
84                          WS_OVERLAPPEDWINDOW , CW_USEDEFAULT, CW_USEDEFAULT, (rect_win.right - rect_win.left) ,
85                          (rect_win.bottom - rect_win.top) , GetDesktopWindow() , NULL , wc.hInstance , NULL
86                     );
87             }
88         else
89         {
90                     //\83t\83\8b\83X\83N\83\8a\81[\83\93
91                     m_pImpl->hWindow = 
92                         CreateWindow
93                         (
94                             m_pImpl->appName.c_str() , m_pImpl->appName.c_str() , 
95                             WS_VISIBLE , CW_USEDEFAULT , CW_USEDEFAULT , width , height ,
96                                 HWND_DESKTOP , NULL , wc.hInstance , NULL
97                         );
98             }
99         
100          
101             // \83E\83B\83\93\83h\83E\95`\89æ
102         ShowWindow( m_pImpl->hWindow , SW_SHOWDEFAULT );
103         UpdateWindow( m_pImpl->hWindow );
104
105
106     } // function constructor 
107
108
109
110     Window::~Window( )
111     {
112             try
113             {
114                 
115                 //\97á\8aO\82È\82°\82é\81H
116                 UnregisterClass(m_pImpl->appName.c_str() , m_pImpl->hInstance );
117             }
118             catch(...)
119             {
120             }
121         
122     }
123     
124     HWND Window::getHandler() const {
125         return m_pImpl->hWindow;
126     }
127
128 } // namespace mof