Mercurial > dwindows
annotate winmain.c @ 404:720e61df8cf6
An even better combobox drawing fix. Only add 100 pixels to the size of
the combobox when the list needs to be shown. This way it won't screw
up clipping of items below it in the box. So OS/2 comboboxes can now
be safely used in vertical boxes without worries.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 10 May 2003 10:33:54 +0000 |
parents | bf42d08d72d7 |
children | 32b5fba0b00a |
rev | line source |
---|---|
3 | 1 /* Dynamic Windows stub file to allow Win32 applications |
2 * to use the main() entry point instead of WinMain(). | |
3 */ | |
4 | |
5 #include <windows.h> | |
6 #include <stdlib.h> | |
7 #include <string.h> | |
8 #include <stdio.h> | |
9 #include <process.h> | |
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 | 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 | 14 |
15 char **_convertargs(int *count, char *start, HINSTANCE DWInstance) | |
16 { | |
17 char *tmp, *argstart, **argv; | |
18 int loc = 0, inquotes = 0; | |
19 | |
20 (*count) = 1; | |
21 | |
22 tmp = start; | |
23 | |
24 /* Count the number of entries */ | |
25 if(*start) | |
26 { | |
27 (*count)++; | |
28 | |
29 while(*tmp) | |
30 { | |
31 if(*tmp == '"' && inquotes) | |
32 inquotes = 0; | |
33 else if(*tmp == '"' && !inquotes) | |
34 inquotes = 1; | |
35 else if(*tmp == ' ' && !inquotes) | |
36 { | |
37 /* Push past any white space */ | |
38 while(*(tmp+1) == ' ') | |
39 tmp++; | |
40 /* If we aren't at the end of the command | |
41 * line increment the count. | |
42 */ | |
43 if(*(tmp+1)) | |
44 (*count)++; | |
45 } | |
46 tmp++; | |
47 } | |
48 } | |
49 | |
50 argv = (char **)malloc(sizeof(char *) * ((*count)+1)); | |
51 argv[0] = malloc(260); | |
52 GetModuleFileName(DWInstance, argv[0], 260); | |
53 | |
54 argstart = tmp = start; | |
55 | |
56 if(*start) | |
57 { | |
58 loc = 1; | |
59 | |
60 while(*tmp) | |
61 { | |
62 if(*tmp == '"' && inquotes) | |
63 { | |
64 *tmp = 0; | |
65 inquotes = 0; | |
66 } | |
67 else if(*tmp == '"' && !inquotes) | |
68 { | |
69 argstart = tmp+1; | |
70 inquotes = 1; | |
71 } | |
72 else if(*tmp == ' ' && !inquotes) | |
73 { | |
74 *tmp = 0; | |
75 argv[loc] = strdup(argstart); | |
76 | |
77 /* Push past any white space */ | |
78 while(*(tmp+1) == ' ') | |
79 tmp++; | |
80 | |
81 /* Move the start pointer */ | |
82 argstart = tmp+1; | |
83 | |
84 /* If we aren't at the end of the command | |
85 * line increment the count. | |
86 */ | |
87 if(*(tmp+1)) | |
88 loc++; | |
89 } | |
90 tmp++; | |
91 } | |
92 if(*argstart) | |
93 argv[loc] = strdup(argstart); | |
94 } | |
95 argv[loc+1] = NULL; | |
96 return argv; | |
97 } | |
98 | |
99 /* Ok this is a really big hack but what the hell ;) */ | |
100 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) | |
101 { | |
102 char **argv; | |
103 int argc; | |
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 | 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 | 108 |
109 argv = _convertargs(&argc, lpCmdLine, hInstance); | |
110 | |
111 return main(argc, argv); | |
112 } |