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