comparison src/gui.c @ 39:b32218b54640

Use ANSI instead of Unicode (Windows 95 support) I don't know why I used Unicode in the first place :p
author Paper <37962225+mrpapersonic@users.noreply.github.com>
date Fri, 22 Apr 2022 02:08:59 -0400
parents 161ec4e87d0a
children cd50c59286be
comparison
equal deleted inserted replaced
38:161ec4e87d0a 39:b32218b54640
25 #include <stdio.h> 25 #include <stdio.h>
26 #include <windows.h> 26 #include <windows.h>
27 #include <stdint.h> 27 #include <stdint.h>
28 #include <stdbool.h> 28 #include <stdbool.h>
29 #include <commdlg.h> 29 #include <commdlg.h>
30 #define _WIN32_WINNT 0x0400
31 #define ARRAYSIZE(a) \
32 sizeof(a)/sizeof(a[0])
30 #define OPEN_FILE_BUTTON 0 33 #define OPEN_FILE_BUTTON 0
31 #define COMBOBOX 1 34 #define COMBOBOX 1
32 #define LISTBOX 2 35 #define LISTBOX 2
33 #define SAVE_FILE_BUTTON 3 36 #define SAVE_FILE_BUTTON 3
37 #ifdef _MSC_VER
38 #define strdup(p) _strdup(p)
39 #endif
34 40
35 HWND hWndListBox, hWndComboBox; 41 HWND hWndListBox, hWndComboBox;
36 int16_t version = 13; 42 int16_t version = 13;
37 enum types { 43 enum types {
38 vf, 44 vf,
89 free(data); 95 free(data);
90 fclose(file); 96 fclose(file);
91 } 97 }
92 98
93 char* open_file(HWND hWnd) { 99 char* open_file(HWND hWnd) {
94 OPENFILENAME ofn; 100 OPENFILENAMEA ofn;
95 char filename[256]; 101 char filename[256];
96 102
97 ZeroMemory(&ofn, sizeof(OPENFILENAME)); 103 ZeroMemory(&ofn, OPENFILENAME_SIZE_VERSION_400);
98 ofn.lStructSize = sizeof(OPENFILENAME); 104 ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;
99 ofn.hwndOwner = hWnd; 105 ofn.hwndOwner = hWnd;
100 ofn.lpstrFile = filename; 106 ofn.lpstrFile = filename;
101 ofn.lpstrFile[0] = '\0'; 107 ofn.lpstrFile[0] = '\0';
102 ofn.nMaxFile = 256; 108 ofn.nMaxFile = 256;
103 ofn.lpstrFilter = "Project files\0*.veg;*.vf\0All files\0*.*\0"; 109 ofn.lpstrFilter = "Project files\0*.veg;*.vf\0All files\0*.*\0";
107 return " "; 113 return " ";
108 } 114 }
109 115
110 display_file(filename); 116 display_file(filename);
111 117
112 return _strdup(filename); 118 return strdup(filename);
113 } 119 }
114 120
115 void save_file(HWND hWnd, char* input_file) { 121 void save_file(HWND hWnd, char* input_file) {
116 if (strcmp(input_file, " ") == 0) { 122 if (strcmp(input_file, " ") == 0) {
117 MessageBoxW(hWnd, 123 MessageBoxA(hWnd,
118 L"Please open a file first!", 124 "Please open a file first!",
119 L"Invalid input file!", 125 "Invalid input file!",
120 MB_ICONEXCLAMATION); 126 MB_ICONEXCLAMATION);
121 return; 127 return;
122 } 128 }
123 OPENFILENAME ofn; 129 OPENFILENAMEA ofn;
124 char output_file[256]; 130 char output_file[256];
125 131
126 ZeroMemory(&ofn, sizeof(OPENFILENAME)); 132 ZeroMemory(&ofn, OPENFILENAME_SIZE_VERSION_400);
127 ofn.lStructSize = sizeof(OPENFILENAME); 133 ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;
128 ofn.hwndOwner = hWnd; 134 ofn.hwndOwner = hWnd;
129 ofn.lpstrFile = output_file; 135 ofn.lpstrFile = output_file;
130 ofn.lpstrFile[0] = '\0'; 136 ofn.lpstrFile[0] = '\0';
131 ofn.nMaxFile = 256; 137 ofn.nMaxFile = 256;
132 ofn.lpstrFilter = "Movie Studio project files\0*.vf\0VEGAS Pro project files\0*.veg\0All files\0*.*\0"; 138 ofn.lpstrFilter = "Movie Studio project files\0*.vf\0VEGAS Pro project files\0*.veg\0All files\0*.*\0";
137 } 143 }
138 144
139 copy_file(input_file, output_file); 145 copy_file(input_file, output_file);
140 FILE* output = fopen(output_file, "r+b"); 146 FILE* output = fopen(output_file, "r+b");
141 if (output == NULL) { 147 if (output == NULL) {
142 MessageBoxW(hWnd, L"Failed to save project file!", L"Saving project failed!", MB_ICONEXCLAMATION); 148 MessageBoxA(hWnd, "Failed to save project file!", "Saving project failed!", MB_ICONEXCLAMATION);
143 return; 149 return;
144 } 150 }
145 151
146 switch ((int)type) { 152 switch ((int)type) {
147 case vf: { 153 case vf: {
161 fclose(output); 167 fclose(output);
162 } 168 }
163 169
164 void AddControls(HWND hWnd) { 170 void AddControls(HWND hWnd) {
165 /* Versions */ 171 /* Versions */
166 hWndComboBox = CreateWindowW(L"ComboBox", NULL, 172 hWndComboBox = CreateWindowA("ComboBox", NULL,
167 CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_VSCROLL, 173 CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_CHILD | WS_VISIBLE | WS_OVERLAPPED | WS_VSCROLL,
168 (int)((225 - 50)/2), 30, 50, 200, 174 (int)((225 - 50)/2), 30, 50, 200,
169 hWnd, (HMENU)COMBOBOX, NULL, NULL); /** 175 hWnd, (HMENU)COMBOBOX, NULL, NULL); /**
170 * I don't understand what half of 176 * I don't understand what half of
171 * these arguments are for, so chances 177 * these arguments are for, so chances
185 * small to figure it out. 191 * small to figure it out.
186 **/ 192 **/
187 memset(&A,0,sizeof(A)); 193 memset(&A,0,sizeof(A));
188 int i = 0; 194 int i = 0;
189 for (i = 0; i <= 11; i++) { 195 for (i = 0; i <= 11; i++) {
190 wcscpy_s((WCHAR*)A, sizeof(A)/sizeof(TCHAR), (WCHAR*)versions[i]); 196 strncpy((TCHAR*)A, (TCHAR*)versions[i], ARRAYSIZE(A);
191 SendMessage(hWndComboBox, (UINT)CB_ADDSTRING, (WPARAM)0, (LPARAM)A); 197 SendMessage(hWndComboBox, (UINT)CB_ADDSTRING, (WPARAM)0, (LPARAM)A);
192 } 198 }
193 SendMessage(hWndComboBox, CB_SETCURSEL, (WPARAM)3, (LPARAM)0); 199 SendMessage(hWndComboBox, CB_SETCURSEL, (WPARAM)3, (LPARAM)0);
194 /* Open File */ 200 /* Open File */
195 HWND open_button = CreateWindowW(L"Button", L"Open", WS_VISIBLE | WS_CHILD, (int)((225 - 50)/2), 5, 50, 20, hWnd, (HMENU)OPEN_FILE_BUTTON, NULL, NULL); 201 HWND open_button = CreateWindowA("Button", "Open", WS_VISIBLE | WS_CHILD, (int)((225 - 50)/2), 5, 50, 20, hWnd, (HMENU)OPEN_FILE_BUTTON, NULL, NULL);
196 /* Type */ 202 /* Type */
197 TCHAR listbox_items[][13] = {TEXT("VEGAS Pro"), TEXT("Movie Studio")}; 203 TCHAR listbox_items[][13] = {TEXT("VEGAS Pro"), TEXT("Movie Studio")};
198 hWndListBox = CreateWindowW(L"Listbox", NULL, WS_VISIBLE | WS_CHILD | LBS_STANDARD | LBS_NOTIFY, (int)((225 - 100)/2), 55, 100, 40, hWnd, (HMENU)LISTBOX, NULL, NULL); 204 hWndListBox = CreateWindowA("Listbox", NULL, WS_VISIBLE | WS_CHILD | LBS_STANDARD | LBS_NOTIFY, (int)((225 - 100)/2), 55, 100, 40, hWnd, (HMENU)LISTBOX, NULL, NULL);
199 for (i = 0; i < ARRAYSIZE(listbox_items); i++) { 205 for (i = 0; i < ARRAYSIZE(listbox_items); i++) {
200 int pos = (int)SendMessage(hWndListBox, LB_ADDSTRING, i, (LPARAM) listbox_items[i]); 206 int pos = (int)SendMessage(hWndListBox, LB_ADDSTRING, i, (LPARAM) listbox_items[i]);
201 SendMessage(hWndListBox, LB_SETITEMDATA, pos, (LPARAM) i); 207 SendMessage(hWndListBox, LB_SETITEMDATA, pos, (LPARAM) i);
202 } 208 }
203 SendMessage(hWndListBox, LB_SETCURSEL, (WPARAM)0, (LPARAM)0); 209 SendMessage(hWndListBox, LB_SETCURSEL, (WPARAM)0, (LPARAM)0);
204 /* Save File */ 210 /* Save File */
205 HWND save_button = CreateWindowW(L"Button", L"Save", WS_VISIBLE | WS_CHILD, (int)((225 - 50)/2), 90, 50, 20, hWnd, (HMENU)SAVE_FILE_BUTTON, NULL, NULL); 211 HWND save_button = CreateWindowA("Button", "Save", WS_VISIBLE | WS_CHILD, (int)((225 - 50)/2), 90, 50, 20, hWnd, (HMENU)SAVE_FILE_BUTTON, NULL, NULL);
206 if (open_button == NULL || save_button == NULL || hWndListBox == NULL || hWndComboBox == NULL) 212 if (open_button == NULL || save_button == NULL || hWndListBox == NULL || hWndComboBox == NULL)
207 MessageBoxW(hWnd, L"how did you even trigger this", L"GUI could not be initialized!", MB_ICONEXCLAMATION); 213 MessageBoxA(hWnd, "how did you even trigger this", "GUI could not be initialized!", MB_ICONEXCLAMATION);
208 } 214 }
209 215
210 bool CALLBACK SetFont(HWND child, LPARAM font) { 216 bool CALLBACK SetFont(HWND child, LPARAM font) {
211 SendMessage(child, WM_SETFONT, font, true); 217 SendMessage(child, WM_SETFONT, font, true);
212 return true; 218 return true;
241 } 247 }
242 case WM_DESTROY: 248 case WM_DESTROY:
243 PostQuitMessage(0); 249 PostQuitMessage(0);
244 break; 250 break;
245 default: 251 default:
246 return DefWindowProcW(hWnd, msg, wParam, lParam); 252 return DefWindowProcA(hWnd, msg, wParam, lParam);
247 } 253 }
248 return false; 254 return false;
249 } 255 }
250 256
251 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR args, int ncmdshow) { 257 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR args, int ncmdshow) {
252 WNDCLASSW wc = {0}; 258 WNDCLASSA wc = {0};
253 259
254 wc.hbrBackground = (HBRUSH)COLOR_WINDOW; 260 wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
255 wc.hCursor = LoadCursor(NULL, IDC_ARROW); 261 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
256 wc.hInstance = hInstance; 262 wc.hInstance = hInstance;
257 wc.lpszClassName = L"msvpvf"; 263 wc.lpszClassName = "msvpvf";
258 wc.lpfnWndProc = WindowProcedure; 264 wc.lpfnWndProc = WindowProcedure;
259 265
260 if (!RegisterClassW(&wc)) return -1; 266 if (!RegisterClassA(&wc)) return -1;
261 267
262 CreateWindowW(L"msvpvf", L"Movie Studio / Vegas Pro version spoofer", WS_OVERLAPPED | WS_VISIBLE | WS_MINIMIZEBOX | WS_SYSMENU, 100, 100, 225, 200, NULL, NULL, hInstance, NULL); 268 CreateWindowA("msvpvf", "Movie Studio / Vegas Pro version spoofer", WS_OVERLAPPED | WS_VISIBLE | WS_MINIMIZEBOX | WS_SYSMENU, 100, 100, 225, 200, NULL, NULL, hInstance, NULL);
263 269
264 MSG msg = {0}; 270 MSG msg = {0};
265 271
266 while (GetMessage(&msg, NULL, 0, 0)) { 272 while (GetMessage(&msg, NULL, 0, 0)) {
267 TranslateMessage(&msg); 273 TranslateMessage(&msg);
268 DispatchMessage(&msg); 274 DispatchMessage(&msg);
269 } 275 }
270 } 276 return 0;
277 }