--- /dev/null
+\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