mirror of
https://github.com/UberGames/GtkRadiant.git
synced 2024-11-29 07:02:26 +00:00
Suppressing the console window by using WinMain - two variants
This commit is contained in:
parent
9b5ba1fe10
commit
54238f9bf1
2 changed files with 62 additions and 3 deletions
|
@ -51,6 +51,65 @@ bool g_bBuildList = false;
|
|||
int g_argc;
|
||||
char** g_argv;
|
||||
|
||||
// =============================================================================
|
||||
// Windows WinMain() wrapper for main()
|
||||
// used in Release Builds to suppress the Console
|
||||
#if defined(_WIN32)
|
||||
|
||||
// contains __getmainargs()
|
||||
//#include <internal.h>
|
||||
#include <winbase.h>
|
||||
|
||||
int main(int argc, char* argv[]);
|
||||
|
||||
int CALLBACK WinMain(
|
||||
__in HINSTANCE hInstance,
|
||||
__in HINSTANCE hPrevInstance,
|
||||
__in LPSTR lpCmdLine,
|
||||
__in int nCmdShow
|
||||
){
|
||||
if(false) {
|
||||
// while this works, it's not exactly nice
|
||||
__argc = 3;
|
||||
// load msvcrt.dll - we need an internal function from it
|
||||
HMODULE crtlib = LoadLibrary("msvcrt.dll");
|
||||
if(crtlib == NULL) {
|
||||
// do error handling here?
|
||||
return 0;
|
||||
}
|
||||
|
||||
// retrieve pointer to function
|
||||
struct fake_startupinfo {
|
||||
int newmode;
|
||||
};
|
||||
typedef int(*GetMainArgsPtr)(int*, char***, char***, int, fake_startupinfo*);
|
||||
GetMainArgsPtr __getmainargs = (GetMainArgsPtr) GetProcAddress(crtlib, "__getmainargs");
|
||||
if(__getmainargs == NULL){
|
||||
FreeLibrary(crtlib);
|
||||
return 0;
|
||||
}
|
||||
|
||||
fake_startupinfo startinfo;
|
||||
startinfo.newmode = 0; //this sets _newmode - what does that do?
|
||||
int argc;
|
||||
char** argv;
|
||||
char** envp;
|
||||
int argret = __getmainargs(&argc, &argv, &envp, 0, &startinfo); //0: no wildcard expanding
|
||||
FreeLibrary(crtlib);
|
||||
if(argret < 0) {
|
||||
// might want to handle this error here?
|
||||
return 0;
|
||||
}
|
||||
return main(argc, argv);
|
||||
}
|
||||
else {
|
||||
// This, on the other hand, seems very nice - but just like the first version I'm not sure it always works.
|
||||
return main(__argc, __argv);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// =============================================================================
|
||||
// Splash screen
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Version="9,00"
|
||||
Name="radiant"
|
||||
ProjectGUID="{65D02375-63EE-4A8A-9F8E-504B1D5A1D02}"
|
||||
Keyword="Win32Proj"
|
||||
|
@ -135,7 +135,7 @@
|
|||
AdditionalDependencies="Ws2_32.lib glib-2.0.lib gobject-2.0.lib intl.lib gtk-win32-2.0.lib gdk-win32-2.0.lib pango-1.0.lib pangoft2-1.0.lib gdkglext-win32-1.0.lib gtkglext-win32-1.0.lib libxml2.lib mathlib.lib synapse.lib l_net.lib cmdlib.lib"
|
||||
AdditionalLibraryDirectories=""$(SolutionDir)\..\gtk-2.16.6\lib";"$(SolutionDir)\..\libxml2-2.7.3\lib";"$(SolutionDir)\..\gtkglext-1.2.0\lib";"$(SolutionDir)\build\$(ConfigurationName)\libs""
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
|
|
Loading…
Reference in a new issue