Added 0.030 of PicoDrive and moved license files into root
[cyclone68000.git] / PicoDrive / FrameWindow.cpp
diff --git a/PicoDrive/FrameWindow.cpp b/PicoDrive/FrameWindow.cpp
new file mode 100644 (file)
index 0000000..a778c87
--- /dev/null
@@ -0,0 +1,92 @@
+\r
+#include "stdafx.h"\r
+\r
+HWND FrameWnd=NULL;\r
+struct GXDisplayProperties GXDisp;\r
+struct GXKeyList GXKey;\r
+\r
+// Window procedure for frame window\r
+static LRESULT CALLBACK FrameProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)\r
+{\r
+  switch (Msg)\r
+  {\r
+    case WM_COMMAND:\r
+    switch (LOWORD(wParam))\r
+    {\r
+      case IDOK: case IDCANCEL: SendMessage(hWnd,WM_CLOSE,0,0); break;\r
+\r
+      case ID_LOADROM: FileLoadRom(); break;\r
+      case ID_OPTIONS_GRAB: DebugScreenGrab(); break;\r
+      case ID_OPTIONS_SAVE: FileState(0); break;\r
+      case ID_OPTIONS_LOAD: FileState(1); break;\r
+    }\r
+    return 0;\r
+\r
+    case WM_KILLFOCUS: GXSuspend(); return 0;\r
+    case WM_SETFOCUS: GXResume(); return 0;\r
+\r
+    case WM_CLOSE: PostQuitMessage(0); return 0;\r
+\r
+    case WM_DESTROY:\r
+      GXCloseInput();\r
+      GXCloseDisplay();\r
+      FrameWnd=NULL; // Blank window handle\r
+    return 0;\r
+  }\r
+\r
+  return DefWindowProc(hWnd,Msg,wParam,lParam);\r
+}\r
+\r
+static int GxInit()\r
+{\r
+  GXOpenDisplay(FrameWnd,GX_FULLSCREEN);\r
+  GXOpenInput();\r
+  GXDisp=GXGetDisplayProperties();\r
+  GXKey=GXGetDefaultKeys(GX_NORMALKEYS);\r
+\r
+  // The real layout of the 3800:\r
+  if (Main3800) { GXDisp.cbxPitch=-640; GXDisp.cbyPitch=2; }\r
+\r
+  return 0;\r
+}\r
+\r
+int FrameInit()\r
+{\r
+  WNDCLASS wc;\r
+  SHMENUBARINFO mbi;\r
+  TCHAR title[128]={0};\r
+  RECT rect={0,0,0,0};\r
+\r
+  memset(&wc,0,sizeof(wc));\r
+  memset(&mbi,0,sizeof(mbi));\r
+\r
+  // Register the Frame window class\r
+  wc.lpfnWndProc=FrameProc;\r
+  wc.hInstance=GetModuleHandle(NULL);\r
+  wc.lpszClassName=APP_TITLE;\r
+  wc.hbrBackground=(HBRUSH)CreateSolidBrush(0x404040);\r
+  RegisterClass(&wc);\r
+\r
+  FrameWnd=CreateWindowEx(WS_EX_CAPTIONOKBTN,APP_TITLE,APP_TITLE,WS_VISIBLE,\r
+    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,\r
+    NULL,NULL,wc.hInstance,NULL);\r
+  \r
+  wsprintf(title,APP_TITLE L" v%x.%.3x",PicoVer>>12,PicoVer&0xfff);\r
+  SetWindowText(FrameWnd,title);\r
+\r
+  // Show SIP\r
+  mbi.cbSize=sizeof(mbi);\r
+  mbi.hwndParent=FrameWnd;\r
+  mbi.nToolBarId=IDR_MENUBAR1;\r
+  mbi.hInstRes=wc.hInstance;\r
+  SHCreateMenuBar(&mbi);\r
+\r
+  // Resize Frame to avoid the SIP\r
+  GetWindowRect(FrameWnd,&rect);\r
+  MoveWindow(FrameWnd, rect.left,rect.top, rect.right-rect.left,rect.bottom-rect.top-26, 1);\r
+\r
+  GxInit();\r
+\r
+  FileLoadRom();\r
+  return 0;\r
+}\r