15eb0001 |
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 |