Mercurial > dwindows
view winmain.c @ 2262:fe64be23680e
Mac: Switch to using NSFontManager fontWithFamily instead of NSFont fontWithName
fontWithName: required the PostScript font name which could be the same as
the family name, but often had no spaces, or extra text associated.
Since we need to use the shared font manager, pull it out of the font chooser.
Also "New Times Roman" worked on most platforms but required "Times New Roman"
on Mac, so hopefully this will work on other platforms too.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 27 Jan 2021 19:07:25 +0000 |
parents | 05dd5189099f |
children |
line wrap: on
line source
/* Dynamic Windows stub file to allow Win32 applications * to use the main() entry point instead of WinMain(). * * (C) 2000-2012 Brian Smith <brian@dbsoft.org> */ #include <windows.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <process.h> #ifndef NODW void Win32_Set_Instance(HINSTANCE hInstance); #endif char **_convertargs(int *count, char *start, HINSTANCE DWInstance) { char *tmp, *argstart, **argv; int loc = 0, inquotes = 0; (*count) = 1; tmp = start; /* Count the number of entries */ if(*start) { (*count)++; while(*tmp) { if(*tmp == '"' && inquotes) inquotes = 0; else if(*tmp == '"' && !inquotes) inquotes = 1; else if(*tmp == ' ' && !inquotes) { /* Push past any white space */ while(*(tmp+1) == ' ') tmp++; /* If we aren't at the end of the command * line increment the count. */ if(*(tmp+1)) (*count)++; } tmp++; } } argv = (char **)malloc(sizeof(char *) * ((*count)+1)); argv[0] = malloc(260); GetModuleFileNameA(DWInstance, argv[0], 260); argstart = tmp = start; if(*start) { loc = 1; while(*tmp) { if(*tmp == '"' && inquotes) { *tmp = 0; inquotes = 0; } else if(*tmp == '"' && !inquotes) { argstart = tmp+1; inquotes = 1; } else if(*tmp == ' ' && !inquotes) { *tmp = 0; argv[loc] = _strdup(argstart); /* Push past any white space */ while(*(tmp+1) == ' ') tmp++; /* Move the start pointer */ argstart = tmp+1; /* If we aren't at the end of the command * line increment the count. */ if(*(tmp+1)) loc++; } tmp++; } if(*argstart) argv[loc] = _strdup(argstart); } argv[loc+1] = NULL; return argv; } /* Protoype for the application entrypoint */ int main(int argc, char **argv); /* Ok this is a really big hack but what the hell ;) */ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { char **argv; int argc; #ifndef NODW Win32_Set_Instance(hInstance); #endif argv = _convertargs(&argc, lpCmdLine, hInstance); return main(argc, argv); }