Mercurial > dwindows
view winmain.c @ 2176:288416bd6d3e
Mac: Fixes for display using NSView based NSTableView.
Not perfect yet, seems to be issues with the caching of the
NSTableCellViews and the visuals are not quite what they should be... the
NSTextFields are styled not how I expected. Also I fixed the display by
forcing the layout of the NSTableCellView using 16x16 icon size and 20 pixel
row heights. There may be a better way to calculate things automatically.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 12 Oct 2020 09:17:14 +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); }