comparison src/gui.c @ 47:7cb4ca7cf257

Use a common.c file to hold concurrent functions Also I fixed that 1.4 KB bug I think
author Paper <mrpapersonic@gmail.com>
date Sat, 21 May 2022 18:41:54 -0400
parents cd50c59286be
children 0f6c604b6863
comparison
equal deleted inserted replaced
46:7cb9fad3f5ee 47:7cb4ca7cf257
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 #include "../include/common.h"
30 #define _WIN32_WINNT 0x0400 31 #define _WIN32_WINNT 0x0400
31 #define ARRAYSIZE(a) \ 32 #define ARRAYSIZE(a) \
32 sizeof(a)/sizeof(a[0]) 33 sizeof(a)/sizeof(a[0])
33 #define OPEN_FILE_BUTTON 0 34 #define OPEN_FILE_BUTTON 0
34 #define COMBOBOX 1 35 #define COMBOBOX 1
44 vf, 45 vf,
45 veg 46 veg
46 } type; 47 } type;
47 char* file_name = " "; 48 char* file_name = " ";
48 49
49 void set_data(unsigned char magic[], uint16_t version, FILE* target) {
50 int i;
51 fseek(target, 0x46, SEEK_SET);
52 fputc(version, target);
53 for (i=0; i<=sizeof(*magic); ++i) {
54 fseek(target, 0x18+i, SEEK_SET);
55 fputc(magic[i], target);
56 }
57 }
58
59 int copy_file(char* source_file, char* target_file) {
60 /* Copy a file */
61 FILE *source, *target;
62
63 source = fopen(source_file, "rb");
64 if (source == NULL) return 1;
65 target = fopen(target_file, "wb");
66 if (target == NULL) {
67 fclose(source);
68 return 1;
69 }
70
71 size_t n, m;
72 unsigned char buff[8192];
73 do {
74 n = fread(buff, 1, sizeof(buff), source);
75 if (n) m = fwrite(buff, 1, n, target);
76 else m = 0;
77 } while ((n > 0) && (n == m));
78
79 fclose(target);
80 fclose(source);
81 return 0;
82 }
83 50
84 void display_file(char* path) { 51 void display_file(char* path) {
85 /* Read the file to memory */ 52 /* Read the file to memory */
86 FILE* file; 53 FILE* file;
87 file = fopen(path, "rb"); 54 file = fopen(path, "rb");
175 hWnd, (HMENU)COMBOBOX, NULL, NULL); /** 142 hWnd, (HMENU)COMBOBOX, NULL, NULL); /**
176 * I don't understand what half of 143 * I don't understand what half of
177 * these arguments are for, so chances 144 * these arguments are for, so chances
178 * are that you don't either. 145 * are that you don't either.
179 **/ 146 **/
180 TCHAR versions[][10] = {TEXT("8"), TEXT("9"), TEXT("10"), 147 TCHAR versions[][10] = {TEXT("8"), TEXT("9"), TEXT("10"),
181 TEXT("11"), TEXT("12"), TEXT("13"), 148 TEXT("11"), TEXT("12"), TEXT("13"),
182 TEXT("14"), TEXT("15"), TEXT("16"), 149 TEXT("14"), TEXT("15"), TEXT("16"),
183 TEXT("17"), TEXT("18"), TEXT("19")}; 150 TEXT("17"), TEXT("18"), TEXT("19")};
184 151
185 TCHAR A[16];
186
187 /**
188 * Here we can't just use a for loop
189 * and cast all of those to `TEXT()`.
190 * Why? I don't know. My brain is too
191 * small to figure it out.
192 **/
193 memset(&A,0,sizeof(A));
194 int i = 0; 152 int i = 0;
195 for (i = 0; i <= 11; i++) { 153 for (i = 0; i < ARRAYSIZE(versions); i++) {
196 strncpy((TCHAR*)A, (TCHAR*)versions[i], ARRAYSIZE(A)); 154 SendMessage(hWndComboBox, (UINT)CB_ADDSTRING, (WPARAM)0, (LPARAM)versions[i]);
197 SendMessage(hWndComboBox, (UINT)CB_ADDSTRING, (WPARAM)0, (LPARAM)A);
198 } 155 }
199 SendMessage(hWndComboBox, CB_SETCURSEL, (WPARAM)3, (LPARAM)0); 156 SendMessage(hWndComboBox, CB_SETCURSEL, (WPARAM)3, (LPARAM)0);
200 /* Open File */ 157 /* Open File */
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); 158 HWND open_button = CreateWindowA("Button", "Open", WS_VISIBLE | WS_CHILD, (int)((225 - 50)/2), 5, 50, 20, hWnd, (HMENU)OPEN_FILE_BUTTON, NULL, NULL);
202 /* Type */ 159 /* Type */