mirror of
				https://github.com/cmderdev/cmder.git
				synced 2025-11-04 03:12:16 +08:00 
			
		
		
		
	Merge pull request #2746 from DRSDavidSoft/taskdialog
Use TaskDialog instead of MessageBox (Fixes Builds)
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Microsoft Visual Studio Solution File, Format Version 12.00
 | 
			
		||||
# Visual Studio 14
 | 
			
		||||
VisualStudioVersion = 14.0.23107.0
 | 
			
		||||
 
 | 
			
		||||
@@ -22,13 +22,12 @@
 | 
			
		||||
    <ProjectGuid>{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}</ProjectGuid>
 | 
			
		||||
    <Keyword>Win32Proj</Keyword>
 | 
			
		||||
    <RootNamespace>CmderLauncher</RootNamespace>
 | 
			
		||||
    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 | 
			
		||||
    <ConfigurationType>Application</ConfigurationType>
 | 
			
		||||
    <UseDebugLibraries>true</UseDebugLibraries>
 | 
			
		||||
    <PlatformToolset>v141_xp</PlatformToolset>
 | 
			
		||||
    <PlatformToolset>v140</PlatformToolset>
 | 
			
		||||
    <CharacterSet>Unicode</CharacterSet>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 | 
			
		||||
@@ -36,7 +35,7 @@
 | 
			
		||||
    <UseDebugLibraries>false</UseDebugLibraries>
 | 
			
		||||
    <WholeProgramOptimization>true</WholeProgramOptimization>
 | 
			
		||||
    <CharacterSet>Unicode</CharacterSet>
 | 
			
		||||
    <PlatformToolset>v141</PlatformToolset>
 | 
			
		||||
    <PlatformToolset>v140</PlatformToolset>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 | 
			
		||||
    <ConfigurationType>Application</ConfigurationType>
 | 
			
		||||
@@ -95,6 +94,7 @@
 | 
			
		||||
    <Link>
 | 
			
		||||
      <SubSystem>Windows</SubSystem>
 | 
			
		||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
			
		||||
      <!-- <AdditionalDependencies>comctl32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> -->
 | 
			
		||||
    </Link>
 | 
			
		||||
    <Manifest>
 | 
			
		||||
      <AdditionalManifestFiles>src/app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
 | 
			
		||||
@@ -121,6 +121,7 @@
 | 
			
		||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
			
		||||
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
			
		||||
      <OptimizeReferences>true</OptimizeReferences>
 | 
			
		||||
      <!-- <AdditionalDependencies>comctl32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> -->
 | 
			
		||||
    </Link>
 | 
			
		||||
    <Manifest>
 | 
			
		||||
      <AdditionalManifestFiles>src/app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
 | 
			
		||||
@@ -176,7 +177,7 @@
 | 
			
		||||
    </PostBuildEvent>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ResourceCompile Include="src\Resource.rc">
 | 
			
		||||
    <ResourceCompile Include="src\resource.rc">
 | 
			
		||||
      <FileType>RC</FileType>
 | 
			
		||||
    </ResourceCompile>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@
 | 
			
		||||
#include <iostream>
 | 
			
		||||
 | 
			
		||||
#pragma comment(lib, "Shlwapi.lib")
 | 
			
		||||
#pragma comment(lib, "comctl32.lib")
 | 
			
		||||
#pragma warning( disable : 4091 )
 | 
			
		||||
 | 
			
		||||
#ifndef UNICODE
 | 
			
		||||
@@ -31,6 +32,39 @@
 | 
			
		||||
 | 
			
		||||
#define FAIL_ON_ERROR(x) { DWORD ec; if ((ec = (x)) != ERROR_SUCCESS) { ShowErrorAndExit(ec, __WFUNCTION__, __LINE__); } }
 | 
			
		||||
 | 
			
		||||
void TaskDialogOpen( PCWSTR mainStr, PCWSTR contentStr )
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
	HRESULT hr = NULL;
 | 
			
		||||
 | 
			
		||||
	TASKDIALOGCONFIG tsk = {sizeof(tsk)};
 | 
			
		||||
 | 
			
		||||
	HWND hOwner = NULL;
 | 
			
		||||
	HINSTANCE hInstance = GetModuleHandle(NULL);
 | 
			
		||||
	PCWSTR tskTitle = MAKEINTRESOURCE(IDS_TITLE);
 | 
			
		||||
 | 
			
		||||
	tsk.hInstance = hInstance;
 | 
			
		||||
	tsk.pszMainIcon = MAKEINTRESOURCE(IDI_CMDER);
 | 
			
		||||
	tsk.pszWindowTitle = tskTitle;
 | 
			
		||||
	tsk.pszMainInstruction = mainStr;
 | 
			
		||||
	tsk.pszContent = contentStr;
 | 
			
		||||
 | 
			
		||||
	TASKDIALOG_BUTTON btns[1] = {
 | 
			
		||||
		{ IDOK,     L"OK" }
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	tsk.dwFlags        = TDF_ALLOW_DIALOG_CANCELLATION|TDF_ENABLE_HYPERLINKS;
 | 
			
		||||
	tsk.pButtons       = btns;
 | 
			
		||||
	tsk.cButtons       = _countof(btns);
 | 
			
		||||
 | 
			
		||||
	tsk.hwndParent     = hOwner;
 | 
			
		||||
 | 
			
		||||
	int selectedButtonId = IDOK;
 | 
			
		||||
 | 
			
		||||
	hr = TaskDialogIndirect( &tsk, &selectedButtonId, NULL, NULL );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ShowErrorAndExit(DWORD ec, const wchar_t * func, int line)
 | 
			
		||||
{
 | 
			
		||||
	wchar_t * buffer;
 | 
			
		||||
@@ -164,7 +198,7 @@ void StartCmder(std::wstring  path = L"", bool is_single_mode = false, std::wstr
 | 
			
		||||
	*/
 | 
			
		||||
	if (wcscmp(userConfigDirPath, L"") == 0)
 | 
			
		||||
	{
 | 
			
		||||
		// No - It wasn't. 
 | 
			
		||||
		// No - It wasn't.
 | 
			
		||||
		PathCombine(userConfigDirPath, exeDir, L"config");
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
@@ -306,7 +340,7 @@ void StartCmder(std::wstring  path = L"", bool is_single_mode = false, std::wstr
 | 
			
		||||
			PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified 
 | 
			
		||||
	else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
 | 
			
		||||
	{
 | 
			
		||||
		if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml
 | 
			
		||||
		{
 | 
			
		||||
@@ -673,16 +707,25 @@ cmderOptions GetOption()
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n\n    /c [CMDER User Root Path]\n\n    /task [ConEmu Task Name]\n\n    /icon [CMDER Icon Path]\n\n    [/start [Start in Path] | [Start in Path]]\n\n    /single\n\n    /m\n\n    /x [ConEmu extra arguments]\n\nor\n\n    /register [USER | ALL]\n\nor\n\n    /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
 | 
			
		||||
					cmderOptions.error = true;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n\n    /c [CMDER User Root Path]\n\n    /task [ConEmu Task Name]\n\n    /icon [CMDER Icon Path]\n\n    [/start [Start in Path] | [Start in Path]]\n\n    /single\n\n    /m\n\n    /x [ConEmu extra arguments]\n\nor\n\n    /register [USER | ALL]\n\nor\n\n    /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
 | 
			
		||||
				cmderOptions.error = true;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (cmderOptions.error == true)
 | 
			
		||||
	{
 | 
			
		||||
		wchar_t validOptions[512];
 | 
			
		||||
		HMODULE hMod = GetModuleHandle(NULL);
 | 
			
		||||
		LoadString(hMod, IDS_SWITCHES, validOptions, 512);
 | 
			
		||||
 | 
			
		||||
		// display list of valid options on unrecognized parameter
 | 
			
		||||
		TaskDialogOpen( L"Unrecognized parameter.", validOptions );
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	LocalFree(szArgList);
 | 
			
		||||
@@ -725,4 +768,4 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -9,6 +9,7 @@
 | 
			
		||||
                                
 | 
			
		||||
#include "resource.h"
 | 
			
		||||
#include "version.rc2"
 | 
			
		||||
#include "strings.rc2"
 | 
			
		||||
 | 
			
		||||
#define APSTUDIO_READONLY_SYMBOLS
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
							
								
								
									
										12
									
								
								launcher/src/strings.rc2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								launcher/src/strings.rc2
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Corresponding ids should be defined in `resource.h` file.
 | 
			
		||||
 | 
			
		||||
STRINGTABLE
 | 
			
		||||
{
 | 
			
		||||
	IDS_TITLE             "Cmder Launcher"
 | 
			
		||||
	
 | 
			
		||||
	IDS_SWITCHES          L"Valid options:\n\n    /c [CMDER User Root Path]\n    /task [ConEmu Task Name]\n    /icon [CMDER Icon Path]\n    [/start [Start in Path] | [Start in Path]]\n    /single\n    /m\n    /x [ConEmu extra arguments]\n\nor, either:\n    /register [USER | ALL]\n    /unregister [USER | ALL]"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
		Reference in New Issue
	
	Block a user