added copyright line to top of source files next to license information
[cyclone68000.git] / PicoDrive / FrameWindow.cpp
1 \r
2 // This file is part of the PicoDrive Megadrive Emulator\r
3 \r
4 // Copyright (c) 2011 FinalDave (emudave (at) gmail.com)\r
5 \r
6 // This code is licensed under the GNU General Public License version 2.0 and the MAME License.\r
7 // You can choose the license that has the most advantages for you.\r
8 \r
9 // SVN repository can be found at http://code.google.com/p/cyclone68000/\r
10 \r
11 #include "stdafx.h"\r
12 \r
13 HWND FrameWnd=NULL;\r
14 struct GXDisplayProperties GXDisp;\r
15 struct GXKeyList GXKey;\r
16 \r
17 // Window procedure for frame window\r
18 static LRESULT CALLBACK FrameProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)\r
19 {\r
20   switch (Msg)\r
21   {\r
22     case WM_COMMAND:\r
23     switch (LOWORD(wParam))\r
24     {\r
25       case IDOK: case IDCANCEL: SendMessage(hWnd,WM_CLOSE,0,0); break;\r
26 \r
27       case ID_LOADROM: FileLoadRom(); break;\r
28       case ID_OPTIONS_GRAB: DebugScreenGrab(); break;\r
29       case ID_OPTIONS_SAVE: FileState(0); break;\r
30       case ID_OPTIONS_LOAD: FileState(1); break;\r
31     }\r
32     return 0;\r
33 \r
34     case WM_KILLFOCUS: GXSuspend(); return 0;\r
35     case WM_SETFOCUS: GXResume(); return 0;\r
36 \r
37     case WM_CLOSE: PostQuitMessage(0); return 0;\r
38 \r
39     case WM_DESTROY:\r
40       GXCloseInput();\r
41       GXCloseDisplay();\r
42       FrameWnd=NULL; // Blank window handle\r
43     return 0;\r
44   }\r
45 \r
46   return DefWindowProc(hWnd,Msg,wParam,lParam);\r
47 }\r
48 \r
49 static int GxInit()\r
50 {\r
51   GXOpenDisplay(FrameWnd,GX_FULLSCREEN);\r
52   GXOpenInput();\r
53   GXDisp=GXGetDisplayProperties();\r
54   GXKey=GXGetDefaultKeys(GX_NORMALKEYS);\r
55 \r
56   // The real layout of the 3800:\r
57   if (Main3800) { GXDisp.cbxPitch=-640; GXDisp.cbyPitch=2; }\r
58 \r
59   return 0;\r
60 }\r
61 \r
62 int FrameInit()\r
63 {\r
64   WNDCLASS wc;\r
65   SHMENUBARINFO mbi;\r
66   TCHAR title[128]={0};\r
67   RECT rect={0,0,0,0};\r
68 \r
69   memset(&wc,0,sizeof(wc));\r
70   memset(&mbi,0,sizeof(mbi));\r
71 \r
72   // Register the Frame window class\r
73   wc.lpfnWndProc=FrameProc;\r
74   wc.hInstance=GetModuleHandle(NULL);\r
75   wc.lpszClassName=APP_TITLE;\r
76   wc.hbrBackground=(HBRUSH)CreateSolidBrush(0x404040);\r
77   RegisterClass(&wc);\r
78 \r
79   FrameWnd=CreateWindowEx(WS_EX_CAPTIONOKBTN,APP_TITLE,APP_TITLE,WS_VISIBLE,\r
80     CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,\r
81     NULL,NULL,wc.hInstance,NULL);\r
82   \r
83   wsprintf(title,APP_TITLE L" v%x.%.3x",PicoVer>>12,PicoVer&0xfff);\r
84   SetWindowText(FrameWnd,title);\r
85 \r
86   // Show SIP\r
87   mbi.cbSize=sizeof(mbi);\r
88   mbi.hwndParent=FrameWnd;\r
89   mbi.nToolBarId=IDR_MENUBAR1;\r
90   mbi.hInstRes=wc.hInstance;\r
91   SHCreateMenuBar(&mbi);\r
92 \r
93   // Resize Frame to avoid the SIP\r
94   GetWindowRect(FrameWnd,&rect);\r
95   MoveWindow(FrameWnd, rect.left,rect.top, rect.right-rect.left,rect.bottom-rect.top-26, 1);\r
96 \r
97   GxInit();\r
98 \r
99   FileLoadRom();\r
100   return 0;\r
101 }\r