Release 980201
[wine/multimedia.git] / programs / notepad / main.c
blobcdc2b64d51ba92fa4b86a3dcbcfe11bebb93addb
1 /*
2 * Notepad
4 * Copyright 1997 Marcel Baur <mbaur@g26.ethz.ch>
5 */
7 #include <windows.h>
9 #include "main.h"
10 #include "license.h"
12 NOTEPAD_GLOBALS Globals;
14 CHAR STRING_MENU_Xx[] = "MENU_En";
15 CHAR STRING_PAGESETUP_Xx[] = "DIALOG_PAGESETUP_En";
17 /***********************************************************************
19 * NOTEPAD_RegisterLanguages
21 * Handle language stuff at startup
24 void NOTEPAD_RegisterLanguages(void) {
26 LPCSTR opt_lang = "En";
27 CHAR lang[3];
28 INT langnum;
30 /* Find language specific string table */
31 for (langnum = 0; langnum <= MAX_LANGUAGE_NUMBER; langnum++)
33 Globals.wStringTableOffset = langnum * 0x100;
34 if (LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang,
35 sizeof(lang)) && !lstrcmp(opt_lang, lang))
36 break;
38 if (langnum > MAX_LANGUAGE_NUMBER)
40 /* Find fallback language */
41 for (langnum = 0; langnum <= MAX_LANGUAGE_NUMBER; langnum++)
43 Globals.wStringTableOffset = langnum * 0x100;
44 if (LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang)))
45 break;
47 if (langnum > MAX_LANGUAGE_NUMBER)
49 MessageBox(0, "No language found", "FATAL ERROR", MB_OK);
50 return(1);
54 /* Change Resource names */
55 lstrcpyn(STRING_MENU_Xx + lstrlen(STRING_MENU_Xx) - 2, lang, 3);
59 /***********************************************************************
61 * NOTEPAD_MenuCommand
63 * All handling of main menu events
66 int NOTEPAD_MenuCommand (WPARAM wParam)
68 printf("NOTEPAD_MenuCommand()\n");
70 switch (wParam) {
71 case NP_FILE_NEW: break;
72 case NP_FILE_SAVE: break;
73 case NP_FILE_SAVEAS: break;
74 case NP_FILE_PRINT: break;
75 case NP_FILE_PAGESETUP: break;
76 case NP_FILE_PRINTSETUP: break;
78 case NP_FILE_EXIT:
79 PostQuitMessage(0);
80 break;
82 case NP_EDIT_UNDO: break;
83 case NP_EDIT_CUT: break;
84 case NP_EDIT_COPY: break;
85 case NP_EDIT_PASTE: break;
86 case NP_EDIT_DELETE: break;
87 case NP_EDIT_TIMEDATE: break;
88 case NP_EDIT_WRAP:
89 Globals.bWrapLongLines = !Globals.bWrapLongLines;
90 CheckMenuItem(Globals.hEditMenu, NP_EDIT_WRAP, MF_BYCOMMAND |
91 (Globals.bWrapLongLines ? MF_CHECKED : MF_UNCHECKED));
92 break;
94 case NP_SEARCH_SEARCH: break;
95 case NP_SEARCH_NEXT: break;
97 case NP_HELP_CONTENTS:
98 printf("NP_HELP_CONTENTS\n");
99 WinHelp(Globals.hMainWnd, HELPFILE, HELP_INDEX, 0);
100 break;
102 case NP_HELP_SEARCH: break;
104 case NP_HELP_ON_HELP:
105 printf("NP_HELP_ON_HELP\n");
106 WinHelp(Globals.hMainWnd, HELPFILE, HELP_HELPONHELP, 0);
107 break;
109 case NP_HELP_LICENSE:
110 WineLicense(Globals.hMainWnd, Globals.lpszLanguage);
111 break;
113 case NP_HELP_NO_WARRANTY:
114 printf("NP_ABOUT_NO_WARRANTY\n");
115 WineWarranty(Globals.hMainWnd, Globals.lpszLanguage);
116 break;
118 case NP_HELP_ABOUT_WINE:
119 printf("NP_ABOUT_WINE\n");
120 ShellAbout(Globals.hMainWnd, "WINE", "Notepad", 0);
121 break;
124 return 0;
129 /***********************************************************************
131 * NOTEPAD_WndProc
134 LRESULT NOTEPAD_WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
136 PAINTSTRUCT ps;
138 switch (msg) {
140 case WM_CREATE:
141 printf("WM_CREATE\n");
142 break;
144 case WM_PAINT:
145 printf("WM_PAINT\n");
146 BeginPaint(hWnd, &ps);
147 EndPaint(hWnd, &ps);
148 break;
150 case WM_COMMAND:
151 printf("WM_COMMAND\n");
152 NOTEPAD_MenuCommand(wParam);
153 break;
155 case WM_DESTROY:
156 printf("WM_DESTROY\n");
157 PostQuitMessage (0);
158 break;
160 default:
161 return DefWindowProc (hWnd, msg, wParam, lParam);
163 return 0l;
168 /***********************************************************************
170 * WinMain
173 void DumpGlobals(void) {
175 printf("DumpGlobals()");
176 printf(" Globals.lpszIniFile: %s\n", Globals.lpszIniFile);
177 printf(" Globals.lpszIcoFile: %s\n", Globals.lpszIcoFile);
178 printf("Globals.lpszLanguage: %s\n", Globals.lpszLanguage);
179 printf(" Globals.hInstance: %i\n", Globals.hInstance);
180 printf(" Globals.hMainMenu: %i\n", Globals.hMainMenu);
184 int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show)
186 MSG msg;
187 WNDCLASS class;
188 char className[] = "NPClass"; /* To make sure className >= 0x10000 */
189 char winName[] = "Notepad";
191 printf("WinMain()\n");
193 /* Setup Globals */
195 Globals.lpszIniFile = "notepad.ini";
196 Globals.lpszIcoFile = "notepad.ico";
197 Globals.lpszLanguage = "En";
198 Globals.hInstance = hInstance;
199 Globals.hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx);
200 Globals.hFileMenu = GetSubMenu(Globals.hMainMenu, 0);
201 Globals.hEditMenu = GetSubMenu(Globals.hMainMenu, 1);
202 Globals.hSearchMenu = GetSubMenu(Globals.hMainMenu, 2);
203 Globals.hLanguageMenu = GetSubMenu(Globals.hMainMenu, 3);
204 Globals.hHelpMenu = GetSubMenu(Globals.hMainMenu, 4);
205 Globals.hMainIcon = ExtractIcon(Globals.hInstance,
206 Globals.lpszIcoFile, 0);
207 if (!Globals.hMainIcon) Globals.hMainIcon =
208 LoadIcon(0, MAKEINTRESOURCE(DEFAULTICON));
210 DumpGlobals();
212 if (!prev){
213 class.style = CS_HREDRAW | CS_VREDRAW;
214 class.lpfnWndProc = NOTEPAD_WndProc;
215 class.cbClsExtra = 0;
216 class.cbWndExtra = 0;
217 class.hInstance = Globals.hInstance;
218 class.hIcon = LoadIcon (0, IDI_APPLICATION);
219 class.hCursor = LoadCursor (0, IDC_ARROW);
220 class.hbrBackground = GetStockObject (WHITE_BRUSH);
221 class.lpszMenuName = "bla\0";
222 class.lpszClassName = (SEGPTR)className;
224 if (!RegisterClass (&class))
225 return FALSE;
227 Globals.hMainWnd = CreateWindow (className, winName, WS_OVERLAPPEDWINDOW,
228 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0,
229 LoadMenu(Globals.hInstance, STRING_MENU_Xx),
230 Globals.hInstance, 0);
232 SetMenu(Globals.hMainWnd, Globals.hMainMenu);
234 ShowWindow (Globals.hMainWnd, show);
235 UpdateWindow (Globals.hMainWnd);
237 while (GetMessage (&msg, 0, 0, 0)) {
238 TranslateMessage (&msg);
239 DispatchMessage (&msg);
241 return 0;
247 /* Local Variables: */
248 /* c-file-style: "GNU" */
249 /* End: */