annotate winmain.c @ 723:37c8d2b4cec5

Initial key press event/signal handling... does not seem to trap on all controls... perhaps they need focus? Will have to see what to do about that.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 14 Mar 2011 01:57:33 +0000
parents bf42d08d72d7
children 32b5fba0b00a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 /* Dynamic Windows stub file to allow Win32 applications
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 * to use the main() entry point instead of WinMain().
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5 #include <windows.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6 #include <stdlib.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 #include <string.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 #include <stdio.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 #include <process.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10
49
bf42d08d72d7 Added font text extent querying code, and made it so winmain.c can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
11 #ifndef NODW
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12 void Win32_Set_Instance(HINSTANCE hInstance);
49
bf42d08d72d7 Added font text extent querying code, and made it so winmain.c can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
13 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15 char **_convertargs(int *count, char *start, HINSTANCE DWInstance)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17 char *tmp, *argstart, **argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 int loc = 0, inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20 (*count) = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
22 tmp = start;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
23
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
24 /* Count the number of entries */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
25 if(*start)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
26 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
27 (*count)++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
28
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
29 while(*tmp)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
30 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
31 if(*tmp == '"' && inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
32 inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
33 else if(*tmp == '"' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
34 inquotes = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35 else if(*tmp == ' ' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
36 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
37 /* Push past any white space */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
38 while(*(tmp+1) == ' ')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
39 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
40 /* If we aren't at the end of the command
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
41 * line increment the count.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
43 if(*(tmp+1))
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
44 (*count)++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
45 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
46 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
49
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
50 argv = (char **)malloc(sizeof(char *) * ((*count)+1));
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
51 argv[0] = malloc(260);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
52 GetModuleFileName(DWInstance, argv[0], 260);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
53
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
54 argstart = tmp = start;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
56 if(*start)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
57 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 loc = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 while(*tmp)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62 if(*tmp == '"' && inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
63 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
64 *tmp = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
65 inquotes = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
66 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
67 else if(*tmp == '"' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
68 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
69 argstart = tmp+1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
70 inquotes = 1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
71 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
72 else if(*tmp == ' ' && !inquotes)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
73 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
74 *tmp = 0;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
75 argv[loc] = strdup(argstart);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
76
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
77 /* Push past any white space */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
78 while(*(tmp+1) == ' ')
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
79 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
80
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
81 /* Move the start pointer */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
82 argstart = tmp+1;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
83
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
84 /* If we aren't at the end of the command
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
85 * line increment the count.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
86 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
87 if(*(tmp+1))
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
88 loc++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
89 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
90 tmp++;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
91 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
92 if(*argstart)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
93 argv[loc] = strdup(argstart);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
94 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
95 argv[loc+1] = NULL;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
96 return argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
98
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
99 /* Ok this is a really big hack but what the hell ;) */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
100 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
101 {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
102 char **argv;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103 int argc;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
104
49
bf42d08d72d7 Added font text extent querying code, and made it so winmain.c can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
105 #ifndef NODW
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
106 Win32_Set_Instance(hInstance);
49
bf42d08d72d7 Added font text extent querying code, and made it so winmain.c can be used
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 3
diff changeset
107 #endif
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
108
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
109 argv = _convertargs(&argc, lpCmdLine, hInstance);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
110
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
111 return main(argc, argv);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
112 }