23 changed files with 1713 additions and 0 deletions
@ -0,0 +1,28 @@ |
|||||
|
|
||||
|
Microsoft Visual Studio Solution File, Format Version 12.00 |
||||
|
# Visual Studio Version 17 |
||||
|
VisualStudioVersion = 17.12.35707.178 d17.12 |
||||
|
MinimumVisualStudioVersion = 10.0.40219.1 |
||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestLibDlg", "TestLibDlg\TestLibDlg.vcxproj", "{FC9D3553-56B2-4453-AB34-94CF67213CE2}" |
||||
|
EndProject |
||||
|
Global |
||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
||||
|
Debug|x64 = Debug|x64 |
||||
|
Debug|x86 = Debug|x86 |
||||
|
Release|x64 = Release|x64 |
||||
|
Release|x86 = Release|x86 |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
||||
|
{FC9D3553-56B2-4453-AB34-94CF67213CE2}.Debug|x64.ActiveCfg = Debug|x64 |
||||
|
{FC9D3553-56B2-4453-AB34-94CF67213CE2}.Debug|x64.Build.0 = Debug|x64 |
||||
|
{FC9D3553-56B2-4453-AB34-94CF67213CE2}.Debug|x86.ActiveCfg = Debug|Win32 |
||||
|
{FC9D3553-56B2-4453-AB34-94CF67213CE2}.Debug|x86.Build.0 = Debug|Win32 |
||||
|
{FC9D3553-56B2-4453-AB34-94CF67213CE2}.Release|x64.ActiveCfg = Release|x64 |
||||
|
{FC9D3553-56B2-4453-AB34-94CF67213CE2}.Release|x64.Build.0 = Release|x64 |
||||
|
{FC9D3553-56B2-4453-AB34-94CF67213CE2}.Release|x86.ActiveCfg = Release|Win32 |
||||
|
{FC9D3553-56B2-4453-AB34-94CF67213CE2}.Release|x86.Build.0 = Release|Win32 |
||||
|
EndGlobalSection |
||||
|
GlobalSection(SolutionProperties) = preSolution |
||||
|
HideSolutionNode = FALSE |
||||
|
EndGlobalSection |
||||
|
EndGlobal |
||||
@ -0,0 +1,87 @@ |
|||||
|
|
||||
|
// DlgProxy.cpp: 구현 파일
|
||||
|
//
|
||||
|
|
||||
|
#include "pch.h" |
||||
|
#include "framework.h" |
||||
|
#include "TestLibDlg.h" |
||||
|
#include "DlgProxy.h" |
||||
|
#include "TestLibDlgDlg.h" |
||||
|
|
||||
|
#ifdef _DEBUG |
||||
|
#define new DEBUG_NEW |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgDlgAutoProxy
|
||||
|
|
||||
|
IMPLEMENT_DYNCREATE(CTestLibDlgDlgAutoProxy, CCmdTarget) |
||||
|
|
||||
|
CTestLibDlgDlgAutoProxy::CTestLibDlgDlgAutoProxy() |
||||
|
{ |
||||
|
EnableAutomation(); |
||||
|
|
||||
|
// 자동화 개체가 활성화되어 있는 동안 계속 애플리케이션을 실행하기 위해
|
||||
|
// 생성자에서 AfxOleLockApp를 호출합니다.
|
||||
|
AfxOleLockApp(); |
||||
|
|
||||
|
// 애플리케이션의 주 창 포인터를 통해 대화 상자에 대한
|
||||
|
// 액세스를 가져옵니다. 프록시의 내부 포인터를 설정하여
|
||||
|
// 대화 상자를 가리키고 대화 상자의 후방 포인터를 이 프록시로
|
||||
|
// 설정합니다.
|
||||
|
ASSERT_VALID(AfxGetApp()->m_pMainWnd); |
||||
|
if (AfxGetApp()->m_pMainWnd) |
||||
|
{ |
||||
|
ASSERT_KINDOF(CTestLibDlgDlg, AfxGetApp()->m_pMainWnd); |
||||
|
if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS(CTestLibDlgDlg))) |
||||
|
{ |
||||
|
m_pDialog = reinterpret_cast<CTestLibDlgDlg*>(AfxGetApp()->m_pMainWnd); |
||||
|
m_pDialog->m_pAutoProxy = this; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
CTestLibDlgDlgAutoProxy::~CTestLibDlgDlgAutoProxy() |
||||
|
{ |
||||
|
// 모든 개체가 OLE 자동화로 만들어졌을 때 애플리케이션을 종료하기 위해
|
||||
|
// 소멸자가 AfxOleUnlockApp를 호출합니다.
|
||||
|
// 이러한 호출로 주 대화 상자가 삭제될 수 있습니다.
|
||||
|
if (m_pDialog != nullptr) |
||||
|
m_pDialog->m_pAutoProxy = nullptr; |
||||
|
AfxOleUnlockApp(); |
||||
|
} |
||||
|
|
||||
|
void CTestLibDlgDlgAutoProxy::OnFinalRelease() |
||||
|
{ |
||||
|
// 자동화 개체에 대한 마지막 참조가 해제되면
|
||||
|
// OnFinalRelease가 호출됩니다. 기본 클래스에서 자동으로 개체를 삭제합니다.
|
||||
|
// 기본 클래스를 호출하기 전에 개체에 필요한 추가 정리 작업을
|
||||
|
// 추가하세요.
|
||||
|
|
||||
|
CCmdTarget::OnFinalRelease(); |
||||
|
} |
||||
|
|
||||
|
BEGIN_MESSAGE_MAP(CTestLibDlgDlgAutoProxy, CCmdTarget) |
||||
|
END_MESSAGE_MAP() |
||||
|
|
||||
|
BEGIN_DISPATCH_MAP(CTestLibDlgDlgAutoProxy, CCmdTarget) |
||||
|
END_DISPATCH_MAP() |
||||
|
|
||||
|
// 참고: IID_ITestLibDlg에 대한 지원을 추가하여
|
||||
|
// VBA에서 형식 안전 바인딩을 지원합니다.
|
||||
|
// 이 IID는 .IDL 파일에 있는 dispinterface의 GUID와 일치해야 합니다.
|
||||
|
|
||||
|
// {3d30aa0d-19ce-4ca6-92b1-70a7403d578c}
|
||||
|
static const IID IID_ITestLibDlg = |
||||
|
{0x3d30aa0d,0x19ce,0x4ca6,{0x92,0xb1,0x70,0xa7,0x40,0x3d,0x57,0x8c}}; |
||||
|
|
||||
|
BEGIN_INTERFACE_MAP(CTestLibDlgDlgAutoProxy, CCmdTarget) |
||||
|
INTERFACE_PART(CTestLibDlgDlgAutoProxy, IID_ITestLibDlg, Dispatch) |
||||
|
END_INTERFACE_MAP() |
||||
|
|
||||
|
// IMPLEMENT_OLECREATE2 매크로가 이 프로젝트의 pch.h에 정의됩니다.
|
||||
|
// {faa0893c-64ec-4ba5-b1f0-18ed8cb7f106}
|
||||
|
IMPLEMENT_OLECREATE2(CTestLibDlgDlgAutoProxy, "TestLibDlg.Application", 0xfaa0893c,0x64ec,0x4ba5,0xb1,0xf0,0x18,0xed,0x8c,0xb7,0xf1,0x06) |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgDlgAutoProxy 메시지 처리기
|
||||
@ -0,0 +1,43 @@ |
|||||
|
|
||||
|
// DlgProxy.h: 헤더 파일
|
||||
|
//
|
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
class CTestLibDlgDlg; |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgDlgAutoProxy 명령 대상
|
||||
|
|
||||
|
class CTestLibDlgDlgAutoProxy : public CCmdTarget |
||||
|
{ |
||||
|
DECLARE_DYNCREATE(CTestLibDlgDlgAutoProxy) |
||||
|
|
||||
|
CTestLibDlgDlgAutoProxy(); // 동적 만들기에 사용되는 protected 생성자입니다.
|
||||
|
|
||||
|
// 특성입니다.
|
||||
|
public: |
||||
|
CTestLibDlgDlg* m_pDialog; |
||||
|
|
||||
|
// 작업입니다.
|
||||
|
public: |
||||
|
|
||||
|
// 재정의입니다.
|
||||
|
public: |
||||
|
virtual void OnFinalRelease(); |
||||
|
|
||||
|
// 구현입니다.
|
||||
|
protected: |
||||
|
virtual ~CTestLibDlgDlgAutoProxy(); |
||||
|
|
||||
|
// 생성된 메시지 맵 함수
|
||||
|
|
||||
|
DECLARE_MESSAGE_MAP() |
||||
|
DECLARE_OLECREATE(CTestLibDlgDlgAutoProxy) |
||||
|
|
||||
|
// 생성된 OLE 디스패치 맵 함수
|
||||
|
|
||||
|
DECLARE_DISPATCH_MAP() |
||||
|
DECLARE_INTERFACE_MAP() |
||||
|
}; |
||||
|
|
||||
Binary file not shown.
@ -0,0 +1,153 @@ |
|||||
|
|
||||
|
// TestLibDlg.cpp: 애플리케이션에 대한 클래스 동작을 정의합니다.
|
||||
|
//
|
||||
|
|
||||
|
#include "pch.h" |
||||
|
#include "framework.h" |
||||
|
#include "TestLibDlg.h" |
||||
|
#include "TestLibDlgDlg.h" |
||||
|
|
||||
|
#ifdef _DEBUG |
||||
|
#define new DEBUG_NEW |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgApp
|
||||
|
|
||||
|
BEGIN_MESSAGE_MAP(CTestLibDlgApp, CWinApp) |
||||
|
ON_COMMAND(ID_HELP, &CWinApp::OnHelp) |
||||
|
END_MESSAGE_MAP() |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgApp 생성
|
||||
|
|
||||
|
CTestLibDlgApp::CTestLibDlgApp() |
||||
|
{ |
||||
|
// 다시 시작 관리자 지원
|
||||
|
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; |
||||
|
|
||||
|
// TODO: 여기에 생성 코드를 추가합니다.
|
||||
|
// InitInstance에 모든 중요한 초기화 작업을 배치합니다.
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
// 유일한 CTestLibDlgApp 개체입니다.
|
||||
|
|
||||
|
CTestLibDlgApp theApp; |
||||
|
|
||||
|
const GUID CDECL BASED_CODE _tlid = |
||||
|
{0xe6371bfe,0x4bde,0x4d88,{0xb4,0x04,0x1d,0x2f,0x22,0x2f,0x1d,0xdf}}; |
||||
|
const WORD _wVerMajor = 1; |
||||
|
const WORD _wVerMinor = 0; |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgApp 초기화
|
||||
|
|
||||
|
BOOL CTestLibDlgApp::InitInstance() |
||||
|
{ |
||||
|
// Windows XP에서는 InitCommonControlsEx()를 필요로 합니다.
|
||||
|
// 사용하도록 지정하는 경우, Windows XP 상에서 반드시 InitCommonControlsEx()가 필요합니다.
|
||||
|
// InitCommonControlsEx()를 사용하지 않으면 창을 만들 수 없습니다.
|
||||
|
INITCOMMONCONTROLSEX InitCtrls; |
||||
|
InitCtrls.dwSize = sizeof(InitCtrls); |
||||
|
// 응용 프로그램에서 사용할 모든 공용 컨트롤 클래스를 포함하도록
|
||||
|
// 이 항목을 설정하십시오.
|
||||
|
InitCtrls.dwICC = ICC_WIN95_CLASSES; |
||||
|
InitCommonControlsEx(&InitCtrls); |
||||
|
|
||||
|
CWinApp::InitInstance(); |
||||
|
|
||||
|
|
||||
|
// OLE 라이브러리를 초기화합니다.
|
||||
|
if (!AfxOleInit()) |
||||
|
{ |
||||
|
AfxMessageBox(IDP_OLE_INIT_FAILED); |
||||
|
return FALSE; |
||||
|
} |
||||
|
|
||||
|
AfxEnableControlContainer(); |
||||
|
|
||||
|
// 대화 상자에 셸 트리 뷰 또는
|
||||
|
// 셸 목록 뷰 컨트롤이 포함되어 있는 경우 셸 관리자를 만듭니다.
|
||||
|
CShellManager *pShellManager = new CShellManager; |
||||
|
|
||||
|
// MFC 컨트롤의 테마를 사용하기 위해 "Windows 원형" 비주얼 관리자 활성화
|
||||
|
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); |
||||
|
|
||||
|
// 표준 초기화
|
||||
|
// 이들 기능을 사용하지 않고 최종 실행 파일의 크기를 줄이려면
|
||||
|
// 아래에서 필요 없는 특정 초기화
|
||||
|
// 루틴을 제거해야 합니다.
|
||||
|
// 해당 설정이 저장된 레지스트리 키를 변경하십시오.
|
||||
|
// TODO: 이 문자열을 회사 또는 조직의 이름과 같은
|
||||
|
// 적절한 내용으로 수정해야 합니다.
|
||||
|
SetRegistryKey(_T("로컬 애플리케이션 마법사에서 생성된 애플리케이션")); |
||||
|
// 자동화 또는 reg/unreg 스위치에 대한 명령줄을 구문 분석합니다.
|
||||
|
CCommandLineInfo cmdInfo; |
||||
|
ParseCommandLine(cmdInfo); |
||||
|
|
||||
|
// 응용 프로그램이 /Embedding 또는 /Automation 스위치로 시작되었습니다.
|
||||
|
// 응용 프로그램을 자동화 서버로 실행합니다.
|
||||
|
if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated) |
||||
|
{ |
||||
|
// CoRegisterClassObject()를 통해 클래스 팩터리를 등록합니다.
|
||||
|
COleTemplateServer::RegisterAll(); |
||||
|
} |
||||
|
// 응용 프로그램이 /Unregserver 또는 /Unregister 스위치로 시작되었습니다. 레지스트리에서 항목을
|
||||
|
// 제거합니다.
|
||||
|
else if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppUnregister) |
||||
|
{ |
||||
|
COleObjectFactory::UpdateRegistryAll(FALSE); |
||||
|
AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor); |
||||
|
return FALSE; |
||||
|
} |
||||
|
// 응용 프로그램이 독립 실행형으로 시작되었거나 다른 스위치로 시작되었습니다(예: /Register
|
||||
|
// 또는 /Regserver). typelibrary를 포함하여 레지스트리 항목을 업데이트합니다.
|
||||
|
else |
||||
|
{ |
||||
|
COleObjectFactory::UpdateRegistryAll(); |
||||
|
AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid); |
||||
|
if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppRegister) |
||||
|
return FALSE; |
||||
|
} |
||||
|
|
||||
|
CTestLibDlgDlg dlg; |
||||
|
m_pMainWnd = &dlg; |
||||
|
INT_PTR nResponse = dlg.DoModal(); |
||||
|
if (nResponse == IDOK) |
||||
|
{ |
||||
|
// TODO: 여기에 [확인]을 클릭하여 대화 상자가 없어질 때 처리할
|
||||
|
// 코드를 배치합니다.
|
||||
|
} |
||||
|
else if (nResponse == IDCANCEL) |
||||
|
{ |
||||
|
// TODO: 여기에 [취소]를 클릭하여 대화 상자가 없어질 때 처리할
|
||||
|
// 코드를 배치합니다.
|
||||
|
} |
||||
|
else if (nResponse == -1) |
||||
|
{ |
||||
|
TRACE(traceAppMsg, 0, "경고: 대화 상자를 만들지 못했으므로 애플리케이션이 예기치 않게 종료됩니다.\n"); |
||||
|
TRACE(traceAppMsg, 0, "경고: 대화 상자에서 MFC 컨트롤을 사용하는 경우 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS를 수행할 수 없습니다.\n"); |
||||
|
} |
||||
|
|
||||
|
// 위에서 만든 셸 관리자를 삭제합니다.
|
||||
|
if (pShellManager != nullptr) |
||||
|
{ |
||||
|
delete pShellManager; |
||||
|
} |
||||
|
|
||||
|
#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS) |
||||
|
ControlBarCleanUp(); |
||||
|
#endif |
||||
|
|
||||
|
// 대화 상자가 닫혔으므로 응용 프로그램의 메시지 펌프를 시작하지 않고 응용 프로그램을 끝낼 수 있도록 FALSE를
|
||||
|
// 반환합니다.
|
||||
|
return FALSE; |
||||
|
} |
||||
|
|
||||
|
int CTestLibDlgApp::ExitInstance() |
||||
|
{ |
||||
|
AfxOleTerm(FALSE); |
||||
|
|
||||
|
return CWinApp::ExitInstance(); |
||||
|
} |
||||
@ -0,0 +1,33 @@ |
|||||
|
|
||||
|
// TestLibDlg.h: PROJECT_NAME 애플리케이션에 대한 주 헤더 파일입니다.
|
||||
|
//
|
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#ifndef __AFXWIN_H__ |
||||
|
#error "PCH에 대해 이 파일을 포함하기 전에 'pch.h'를 포함합니다." |
||||
|
#endif |
||||
|
|
||||
|
#include "resource.h" // 주 기호입니다. |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgApp:
|
||||
|
// 이 클래스의 구현에 대해서는 TestLibDlg.cpp을(를) 참조하세요.
|
||||
|
//
|
||||
|
|
||||
|
class CTestLibDlgApp : public CWinApp |
||||
|
{ |
||||
|
public: |
||||
|
CTestLibDlgApp(); |
||||
|
|
||||
|
// 재정의입니다.
|
||||
|
public: |
||||
|
virtual BOOL InitInstance(); |
||||
|
virtual int ExitInstance(); |
||||
|
|
||||
|
// 구현입니다.
|
||||
|
|
||||
|
DECLARE_MESSAGE_MAP() |
||||
|
}; |
||||
|
|
||||
|
extern CTestLibDlgApp theApp; |
||||
@ -0,0 +1,29 @@ |
|||||
|
// TestLibDlg.idl: TestLibDlg.exe의 형식 라이브러리 소스 |
||||
|
|
||||
|
// 이 파일은 MIDL 컴파일러에 의해 처리되어 |
||||
|
// 형식 라이브러리(TestLibDlg.tlb)입니다. |
||||
|
|
||||
|
[ uuid(e6371bfe-4bde-4d88-b404-1d2f222f1ddf), version(1.0) ] |
||||
|
library TestLibDlg |
||||
|
{ |
||||
|
importlib("stdole32.tlb"); |
||||
|
importlib("stdole2.tlb"); |
||||
|
|
||||
|
// CTestLibDlgDoc의 기본 디스패치 인터페이스 |
||||
|
|
||||
|
[ uuid(3d30aa0d-19ce-4ca6-92b1-70a7403d578c) ] |
||||
|
dispinterface ITestLibDlg |
||||
|
{ |
||||
|
properties: |
||||
|
|
||||
|
methods: |
||||
|
}; |
||||
|
|
||||
|
// CTestLibDlgDoc에 대한 클래스 정보 |
||||
|
|
||||
|
[ uuid(faa0893c-64ec-4ba5-b1f0-18ed8cb7f106) ] |
||||
|
coclass TestLibDlg |
||||
|
{ |
||||
|
[default] dispinterface ITestLibDlg; |
||||
|
}; |
||||
|
}; |
||||
Binary file not shown.
@ -0,0 +1,17 @@ |
|||||
|
REGEDIT |
||||
|
; .REG 파일은 SETUP 프로그램에 사용될 수 있습니다. |
||||
|
; SETUP 프로그램을 사용할 수 없는 경우 아래 항목이 |
||||
|
; CWinApp::RegisterShellFileTypes 및 COleObjectFactory::UpdateRegistryAll을 |
||||
|
; 호출하여 InitInstance에 자동으로 등록됩니다. |
||||
|
|
||||
|
|
||||
|
HKEY_CLASSES_ROOT\TestLibDlg.Application = TestLibDlg Application |
||||
|
|
||||
|
|
||||
|
HKEY_CLASSES_ROOT\TestLibDlg.Application\CLSID = {faa0893c-64ec-4ba5-b1f0-18ed8cb7f106} |
||||
|
|
||||
|
HKEY_CLASSES_ROOT\CLSID\{faa0893c-64ec-4ba5-b1f0-18ed8cb7f106} = TestLibDlg Application |
||||
|
HKEY_CLASSES_ROOT\CLSID\{faa0893c-64ec-4ba5-b1f0-18ed8cb7f106}\ProgId = TestLibDlg.Application |
||||
|
|
||||
|
|
||||
|
HKEY_CLASSES_ROOT\CLSID\{faa0893c-64ec-4ba5-b1f0-18ed8cb7f106}\LocalServer32 = TestLibDlg.EXE |
||||
@ -0,0 +1,240 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<ItemGroup Label="ProjectConfigurations"> |
||||
|
<ProjectConfiguration Include="Debug|Win32"> |
||||
|
<Configuration>Debug</Configuration> |
||||
|
<Platform>Win32</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Release|Win32"> |
||||
|
<Configuration>Release</Configuration> |
||||
|
<Platform>Win32</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Debug|x64"> |
||||
|
<Configuration>Debug</Configuration> |
||||
|
<Platform>x64</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
<ProjectConfiguration Include="Release|x64"> |
||||
|
<Configuration>Release</Configuration> |
||||
|
<Platform>x64</Platform> |
||||
|
</ProjectConfiguration> |
||||
|
</ItemGroup> |
||||
|
<PropertyGroup Label="Globals"> |
||||
|
<VCProjectVersion>17.0</VCProjectVersion> |
||||
|
<ProjectGuid>{FC9D3553-56B2-4453-AB34-94CF67213CE2}</ProjectGuid> |
||||
|
<Keyword>MFCProj</Keyword> |
||||
|
<RootNamespace>TestLibDlg</RootNamespace> |
||||
|
<WindowsTargetPlatformVersion>10.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>v143</PlatformToolset> |
||||
|
<CharacterSet>Unicode</CharacterSet> |
||||
|
<UseOfMfc>Dynamic</UseOfMfc> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
||||
|
<ConfigurationType>Application</ConfigurationType> |
||||
|
<UseDebugLibraries>false</UseDebugLibraries> |
||||
|
<PlatformToolset>v143</PlatformToolset> |
||||
|
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
|
<CharacterSet>Unicode</CharacterSet> |
||||
|
<UseOfMfc>Dynamic</UseOfMfc> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> |
||||
|
<ConfigurationType>Application</ConfigurationType> |
||||
|
<UseDebugLibraries>true</UseDebugLibraries> |
||||
|
<PlatformToolset>v143</PlatformToolset> |
||||
|
<CharacterSet>Unicode</CharacterSet> |
||||
|
<UseOfMfc>Dynamic</UseOfMfc> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
||||
|
<ConfigurationType>Application</ConfigurationType> |
||||
|
<UseDebugLibraries>false</UseDebugLibraries> |
||||
|
<PlatformToolset>v143</PlatformToolset> |
||||
|
<WholeProgramOptimization>true</WholeProgramOptimization> |
||||
|
<CharacterSet>Unicode</CharacterSet> |
||||
|
<UseOfMfc>Dynamic</UseOfMfc> |
||||
|
</PropertyGroup> |
||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
||||
|
<ImportGroup Label="ExtensionSettings"> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="Shared"> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
||||
|
</ImportGroup> |
||||
|
<PropertyGroup Label="UserMacros" /> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
|
<LinkIncremental>true</LinkIncremental> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
|
<LinkIncremental>true</LinkIncremental> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
|
<LinkIncremental>false</LinkIncremental> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
|
<LinkIncremental>false</LinkIncremental> |
||||
|
</PropertyGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
||||
|
<ClCompile> |
||||
|
<PrecompiledHeader>Use</PrecompiledHeader> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<SDLCheck>true</SDLCheck> |
||||
|
<PreprocessorDefinitions>_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> |
||||
|
<LanguageStandard>stdcpp20</LanguageStandard> |
||||
|
<AdditionalIncludeDirectories>C:\git_work\test_lib\a2lLib\a2lLib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Windows</SubSystem> |
||||
|
<RegisterOutput>true</RegisterOutput> |
||||
|
<AdditionalDependencies>C:\git_work\test_lib\a2lLib\Debug\a2lLib.lib;%(AdditionalDependencies)</AdditionalDependencies> |
||||
|
</Link> |
||||
|
<Midl> |
||||
|
<MkTypLibCompatible>false</MkTypLibCompatible> |
||||
|
<ValidateAllParameters>true</ValidateAllParameters> |
||||
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<TypeLibraryName>$(IntDir)TestLibDlg.tlb</TypeLibraryName> |
||||
|
<HeaderFileName>TestLibDlg_h.h</HeaderFileName> |
||||
|
</Midl> |
||||
|
<ResourceCompile> |
||||
|
<Culture>0x0412</Culture> |
||||
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
||||
|
</ResourceCompile> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
||||
|
<ClCompile> |
||||
|
<PrecompiledHeader>Use</PrecompiledHeader> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<SDLCheck>true</SDLCheck> |
||||
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> |
||||
|
<AdditionalIncludeDirectories>C:\git_work\test_lib\a2lLib\a2lLib\include;C:\boost\include\boost-1_87</AdditionalIncludeDirectories> |
||||
|
<LanguageStandard>stdcpp20</LanguageStandard> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Windows</SubSystem> |
||||
|
<RegisterOutput>true</RegisterOutput> |
||||
|
<AdditionalDependencies>C:\git_work\test_lib\a2lLib\Debug\a2lLib.lib</AdditionalDependencies> |
||||
|
<AdditionalLibraryDirectories>C:\boost\x86_lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> |
||||
|
</Link> |
||||
|
<Midl> |
||||
|
<MkTypLibCompatible>false</MkTypLibCompatible> |
||||
|
<ValidateAllParameters>true</ValidateAllParameters> |
||||
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<TypeLibraryName>$(IntDir)TestLibDlg.tlb</TypeLibraryName> |
||||
|
<HeaderFileName>TestLibDlg_h.h</HeaderFileName> |
||||
|
</Midl> |
||||
|
<ResourceCompile> |
||||
|
<Culture>0x0412</Culture> |
||||
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
||||
|
</ResourceCompile> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
||||
|
<ClCompile> |
||||
|
<PrecompiledHeader>Use</PrecompiledHeader> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
|
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
|
<SDLCheck>true</SDLCheck> |
||||
|
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Windows</SubSystem> |
||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
|
<OptimizeReferences>true</OptimizeReferences> |
||||
|
<RegisterOutput>true</RegisterOutput> |
||||
|
</Link> |
||||
|
<Midl> |
||||
|
<MkTypLibCompatible>false</MkTypLibCompatible> |
||||
|
<ValidateAllParameters>true</ValidateAllParameters> |
||||
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<TypeLibraryName>$(IntDir)TestLibDlg.tlb</TypeLibraryName> |
||||
|
<HeaderFileName>TestLibDlg_h.h</HeaderFileName> |
||||
|
</Midl> |
||||
|
<ResourceCompile> |
||||
|
<Culture>0x0412</Culture> |
||||
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
||||
|
</ResourceCompile> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
||||
|
<ClCompile> |
||||
|
<PrecompiledHeader>Use</PrecompiledHeader> |
||||
|
<WarningLevel>Level3</WarningLevel> |
||||
|
<FunctionLevelLinking>true</FunctionLevelLinking> |
||||
|
<IntrinsicFunctions>true</IntrinsicFunctions> |
||||
|
<SDLCheck>true</SDLCheck> |
||||
|
<PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> |
||||
|
</ClCompile> |
||||
|
<Link> |
||||
|
<SubSystem>Windows</SubSystem> |
||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding> |
||||
|
<OptimizeReferences>true</OptimizeReferences> |
||||
|
<RegisterOutput>true</RegisterOutput> |
||||
|
</Link> |
||||
|
<Midl> |
||||
|
<MkTypLibCompatible>false</MkTypLibCompatible> |
||||
|
<ValidateAllParameters>true</ValidateAllParameters> |
||||
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<TypeLibraryName>$(IntDir)TestLibDlg.tlb</TypeLibraryName> |
||||
|
<HeaderFileName>TestLibDlg_h.h</HeaderFileName> |
||||
|
</Midl> |
||||
|
<ResourceCompile> |
||||
|
<Culture>0x0412</Culture> |
||||
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
||||
|
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
||||
|
</ResourceCompile> |
||||
|
</ItemDefinitionGroup> |
||||
|
<ItemGroup> |
||||
|
<ClInclude Include="DlgProxy.h" /> |
||||
|
<ClInclude Include="framework.h" /> |
||||
|
<ClInclude Include="pch.h" /> |
||||
|
<ClInclude Include="Resource.h" /> |
||||
|
<ClInclude Include="targetver.h" /> |
||||
|
<ClInclude Include="TestLibDlg.h" /> |
||||
|
<ClInclude Include="TestLibDlgDlg.h" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ClCompile Include="DlgProxy.cpp" /> |
||||
|
<ClCompile Include="pch.cpp"> |
||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> |
||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> |
||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> |
||||
|
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> |
||||
|
</ClCompile> |
||||
|
<ClCompile Include="TestLibDlg.cpp" /> |
||||
|
<ClCompile Include="TestLibDlgDlg.cpp" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<Midl Include="TestLibDlg.idl" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<None Include="res\TestLibDlg.rc2" /> |
||||
|
<None Include="TestLibDlg.reg" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ResourceCompile Include="TestLibDlg.rc" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<Image Include="res\TestLibDlg.ico" /> |
||||
|
</ItemGroup> |
||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
||||
|
<ImportGroup Label="ExtensionTargets"> |
||||
|
</ImportGroup> |
||||
|
</Project> |
||||
@ -0,0 +1,75 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<ItemGroup> |
||||
|
<Filter Include="소스 파일"> |
||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> |
||||
|
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions> |
||||
|
</Filter> |
||||
|
<Filter Include="헤더 파일"> |
||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> |
||||
|
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions> |
||||
|
</Filter> |
||||
|
<Filter Include="리소스 파일"> |
||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> |
||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> |
||||
|
</Filter> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ClInclude Include="TestLibDlg.h"> |
||||
|
<Filter>헤더 파일</Filter> |
||||
|
</ClInclude> |
||||
|
<ClInclude Include="TestLibDlgDlg.h"> |
||||
|
<Filter>헤더 파일</Filter> |
||||
|
</ClInclude> |
||||
|
<ClInclude Include="DlgProxy.h"> |
||||
|
<Filter>헤더 파일</Filter> |
||||
|
</ClInclude> |
||||
|
<ClInclude Include="framework.h"> |
||||
|
<Filter>헤더 파일</Filter> |
||||
|
</ClInclude> |
||||
|
<ClInclude Include="targetver.h"> |
||||
|
<Filter>헤더 파일</Filter> |
||||
|
</ClInclude> |
||||
|
<ClInclude Include="Resource.h"> |
||||
|
<Filter>헤더 파일</Filter> |
||||
|
</ClInclude> |
||||
|
<ClInclude Include="pch.h"> |
||||
|
<Filter>헤더 파일</Filter> |
||||
|
</ClInclude> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ClCompile Include="TestLibDlg.cpp"> |
||||
|
<Filter>소스 파일</Filter> |
||||
|
</ClCompile> |
||||
|
<ClCompile Include="TestLibDlgDlg.cpp"> |
||||
|
<Filter>소스 파일</Filter> |
||||
|
</ClCompile> |
||||
|
<ClCompile Include="DlgProxy.cpp"> |
||||
|
<Filter>소스 파일</Filter> |
||||
|
</ClCompile> |
||||
|
<ClCompile Include="pch.cpp"> |
||||
|
<Filter>소스 파일</Filter> |
||||
|
</ClCompile> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<Midl Include="TestLibDlg.idl"> |
||||
|
<Filter>소스 파일</Filter> |
||||
|
</Midl> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<None Include="TestLibDlg.reg" /> |
||||
|
<None Include="res\TestLibDlg.rc2"> |
||||
|
<Filter>리소스 파일</Filter> |
||||
|
</None> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ResourceCompile Include="TestLibDlg.rc"> |
||||
|
<Filter>리소스 파일</Filter> |
||||
|
</ResourceCompile> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<Image Include="res\TestLibDlg.ico"> |
||||
|
<Filter>리소스 파일</Filter> |
||||
|
</Image> |
||||
|
</ItemGroup> |
||||
|
</Project> |
||||
@ -0,0 +1,6 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<PropertyGroup> |
||||
|
<RESOURCE_FILE>TestLibDlg.rc</RESOURCE_FILE> |
||||
|
</PropertyGroup> |
||||
|
</Project> |
||||
@ -0,0 +1,519 @@ |
|||||
|
|
||||
|
// TestLibDlgDlg.cpp: 구현 파일
|
||||
|
//
|
||||
|
|
||||
|
#include "pch.h" |
||||
|
#include "framework.h" |
||||
|
#include "TestLibDlg.h" |
||||
|
#include "TestLibDlgDlg.h" |
||||
|
#include "DlgProxy.h" |
||||
|
#include "afxdialogex.h" |
||||
|
|
||||
|
|
||||
|
#include <iostream> |
||||
|
|
||||
|
#ifdef _DEBUG |
||||
|
#define new DEBUG_NEW |
||||
|
#endif |
||||
|
|
||||
|
//template<typename ... Args>
|
||||
|
//std::wstring wstring_format(const std::wstring& format, Args ... args);
|
||||
|
template<typename ... Args> |
||||
|
std::string string_format(const std::string& format, Args ... args) |
||||
|
{ |
||||
|
size_t size = snprintf(nullptr, 0, format.c_str(), args ...) + 1; // Extra space for '\0'
|
||||
|
if (size <= 0) { |
||||
|
throw std::runtime_error("Error during formatting."); |
||||
|
} |
||||
|
std::unique_ptr<char[]> buf(new char[size]); |
||||
|
snprintf(buf.get(), size, format.c_str(), args ...); |
||||
|
return std::string(buf.get(), buf.get() + size - 1); // We don't want the '\0' inside }
|
||||
|
} |
||||
|
|
||||
|
// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다.
|
||||
|
|
||||
|
class CAboutDlg : public CDialogEx |
||||
|
{ |
||||
|
public: |
||||
|
CAboutDlg(); |
||||
|
|
||||
|
// 대화 상자 데이터입니다.
|
||||
|
#ifdef AFX_DESIGN_TIME |
||||
|
enum { IDD = IDD_ABOUTBOX }; |
||||
|
#endif |
||||
|
|
||||
|
protected: |
||||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
|
||||
|
// 구현입니다.
|
||||
|
protected: |
||||
|
DECLARE_MESSAGE_MAP() |
||||
|
}; |
||||
|
|
||||
|
CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
void CAboutDlg::DoDataExchange(CDataExchange* pDX) |
||||
|
{ |
||||
|
CDialogEx::DoDataExchange(pDX); |
||||
|
} |
||||
|
|
||||
|
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) |
||||
|
END_MESSAGE_MAP() |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgDlg 대화 상자
|
||||
|
|
||||
|
|
||||
|
IMPLEMENT_DYNAMIC(CTestLibDlgDlg, CDialogEx); |
||||
|
|
||||
|
CTestLibDlgDlg::CTestLibDlgDlg(CWnd* pParent /*=nullptr*/) |
||||
|
: CDialogEx(IDD_TESTLIBDLG_DIALOG, pParent) |
||||
|
{ |
||||
|
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); |
||||
|
m_pAutoProxy = nullptr; |
||||
|
} |
||||
|
|
||||
|
CTestLibDlgDlg::~CTestLibDlgDlg() |
||||
|
{ |
||||
|
// 이 대화 상자에 대한 자동화 프록시가 있을 경우 이 대화 상자에 대한
|
||||
|
// 후방 포인터를 null로 설정하여
|
||||
|
// 대화 상자가 삭제되었음을 알 수 있게 합니다.
|
||||
|
if (m_pAutoProxy != nullptr) |
||||
|
m_pAutoProxy->m_pDialog = nullptr; |
||||
|
} |
||||
|
|
||||
|
void CTestLibDlgDlg::DoDataExchange(CDataExchange* pDX) |
||||
|
{ |
||||
|
CDialogEx::DoDataExchange(pDX); |
||||
|
} |
||||
|
|
||||
|
BEGIN_MESSAGE_MAP(CTestLibDlgDlg, CDialogEx) |
||||
|
ON_WM_SYSCOMMAND() |
||||
|
ON_WM_CLOSE() |
||||
|
ON_WM_PAINT() |
||||
|
ON_WM_QUERYDRAGICON() |
||||
|
ON_BN_CLICKED(IDC_BUTTON1, &CTestLibDlgDlg::OnBnClickedButton1) |
||||
|
END_MESSAGE_MAP() |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgDlg 메시지 처리기
|
||||
|
|
||||
|
BOOL CTestLibDlgDlg::OnInitDialog() |
||||
|
{ |
||||
|
CDialogEx::OnInitDialog(); |
||||
|
|
||||
|
// 시스템 메뉴에 "정보..." 메뉴 항목을 추가합니다.
|
||||
|
|
||||
|
// IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다.
|
||||
|
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); |
||||
|
ASSERT(IDM_ABOUTBOX < 0xF000); |
||||
|
|
||||
|
CMenu* pSysMenu = GetSystemMenu(FALSE); |
||||
|
if (pSysMenu != nullptr) |
||||
|
{ |
||||
|
BOOL bNameValid; |
||||
|
CString strAboutMenu; |
||||
|
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); |
||||
|
ASSERT(bNameValid); |
||||
|
if (!strAboutMenu.IsEmpty()) |
||||
|
{ |
||||
|
pSysMenu->AppendMenu(MF_SEPARATOR); |
||||
|
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는
|
||||
|
// 프레임워크가 이 작업을 자동으로 수행합니다.
|
||||
|
SetIcon(m_hIcon, TRUE); // 큰 아이콘을 설정합니다.
|
||||
|
SetIcon(m_hIcon, FALSE); // 작은 아이콘을 설정합니다.
|
||||
|
|
||||
|
// TODO: 여기에 추가 초기화 작업을 추가합니다.
|
||||
|
|
||||
|
return TRUE; // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다.
|
||||
|
} |
||||
|
|
||||
|
void CTestLibDlgDlg::OnSysCommand(UINT nID, LPARAM lParam) |
||||
|
{ |
||||
|
if ((nID & 0xFFF0) == IDM_ABOUTBOX) |
||||
|
{ |
||||
|
CAboutDlg dlgAbout; |
||||
|
dlgAbout.DoModal(); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
CDialogEx::OnSysCommand(nID, lParam); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 대화 상자에 최소화 단추를 추가할 경우 아이콘을 그리려면
|
||||
|
// 아래 코드가 필요합니다. 문서/뷰 모델을 사용하는 MFC 애플리케이션의 경우에는
|
||||
|
// 프레임워크에서 이 작업을 자동으로 수행합니다.
|
||||
|
|
||||
|
void CTestLibDlgDlg::OnPaint() |
||||
|
{ |
||||
|
if (IsIconic()) |
||||
|
{ |
||||
|
CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트입니다.
|
||||
|
|
||||
|
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); |
||||
|
|
||||
|
// 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다.
|
||||
|
int cxIcon = GetSystemMetrics(SM_CXICON); |
||||
|
int cyIcon = GetSystemMetrics(SM_CYICON); |
||||
|
CRect rect; |
||||
|
GetClientRect(&rect); |
||||
|
int x = (rect.Width() - cxIcon + 1) / 2; |
||||
|
int y = (rect.Height() - cyIcon + 1) / 2; |
||||
|
|
||||
|
// 아이콘을 그립니다.
|
||||
|
dc.DrawIcon(x, y, m_hIcon); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
CDialogEx::OnPaint(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 사용자가 최소화된 창을 끄는 동안에 커서가 표시되도록 시스템에서
|
||||
|
// 이 함수를 호출합니다.
|
||||
|
HCURSOR CTestLibDlgDlg::OnQueryDragIcon() |
||||
|
{ |
||||
|
return static_cast<HCURSOR>(m_hIcon); |
||||
|
} |
||||
|
|
||||
|
// 컨트롤러에서 해당 개체 중 하나를 계속 사용하고 있을 경우
|
||||
|
// 사용자가 UI를 닫을 때 자동화 서버를 종료하면 안 됩니다. 이들
|
||||
|
// 메시지 처리기는 프록시가 아직 사용 중인 경우 UI는 숨기지만,
|
||||
|
// UI가 표시되지 않아도 대화 상자는
|
||||
|
// 남겨 둡니다.
|
||||
|
|
||||
|
void CTestLibDlgDlg::OnClose() |
||||
|
{ |
||||
|
if (CanExit()) |
||||
|
CDialogEx::OnClose(); |
||||
|
} |
||||
|
|
||||
|
void CTestLibDlgDlg::OnOK() |
||||
|
{ |
||||
|
if (CanExit()) |
||||
|
CDialogEx::OnOK(); |
||||
|
} |
||||
|
|
||||
|
void CTestLibDlgDlg::OnCancel() |
||||
|
{ |
||||
|
if (CanExit()) |
||||
|
CDialogEx::OnCancel(); |
||||
|
} |
||||
|
|
||||
|
BOOL CTestLibDlgDlg::CanExit() |
||||
|
{ |
||||
|
// 프록시 개체가 계속 남아 있으면 자동화 컨트롤러에서는
|
||||
|
// 이 애플리케이션을 계속 사용합니다. 대화 상자는 남겨 두지만
|
||||
|
// 해당 UI는 숨깁니다.
|
||||
|
if (m_pAutoProxy != nullptr) |
||||
|
{ |
||||
|
ShowWindow(SW_HIDE); |
||||
|
return FALSE; |
||||
|
} |
||||
|
|
||||
|
return TRUE; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
void CTestLibDlgDlg::OnBnClickedButton1() |
||||
|
{ |
||||
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
||||
|
loadA2lFile("C:\\Users\\oilvirus\\Downloads\\example-a2l-file.a2l"); |
||||
|
} |
||||
|
|
||||
|
void CTestLibDlgDlg::loadA2lFile(std::string strFilePath) |
||||
|
{ |
||||
|
std::string strLogData; |
||||
|
|
||||
|
bool bIsFileExist = false; |
||||
|
try { |
||||
|
bIsFileExist = std::filesystem::exists(strFilePath); |
||||
|
} |
||||
|
catch (const std::exception& error) { |
||||
|
std::cout << "Failed to fetch the A2l test files. Error: " |
||||
|
<< error.what(); |
||||
|
} |
||||
|
|
||||
|
a2l::A2lFile file; |
||||
|
file.Filename(strFilePath.data()); |
||||
|
const auto parse = file.ParseFile(); |
||||
|
if (parse ) |
||||
|
std::cout << file.LastError() << " : " << strFilePath.data(); |
||||
|
std::cout << file.Name() << (parse ? " : OK" : " : FAIL") << std::endl; |
||||
|
|
||||
|
AddLogString(strFilePath.data()); |
||||
|
|
||||
|
|
||||
|
//if (file.A2lVersion().VersionNo == 1)
|
||||
|
// ;
|
||||
|
std::cout << file.A2lVersion().VersionNo << " : " << file.A2lVersion().VersionNo; |
||||
|
AddLogString(string_format("file.A2lVersion().VersionNo : %d", file.A2lVersion().VersionNo)); |
||||
|
|
||||
|
//if (file.A2lVersion().UpgradeNo == 71)
|
||||
|
// ;
|
||||
|
std::cout << file.A2lVersion().UpgradeNo << " : " << file.A2lVersion().UpgradeNo; |
||||
|
AddLogString(string_format("file.A2lVersion().UpgradeNo : %d", file.A2lVersion().UpgradeNo)); |
||||
|
|
||||
|
const auto& project = file.Project(); |
||||
|
|
||||
|
const auto& header = project.Header(); |
||||
|
//EXPECT_FALSE(header.Comment.empty());
|
||||
|
//EXPECT_FALSE(header.ProjectNo.empty());
|
||||
|
//EXPECT_FALSE(header.VersionNo.empty());
|
||||
|
std::cout << header.Comment << " : " << header.Comment; |
||||
|
AddLogString(string_format("header.Comment : %s", header.Comment.c_str())); |
||||
|
std::cout << header.ProjectNo << " : " << header.ProjectNo; |
||||
|
AddLogString(string_format("header.ProjectNo : %s", header.ProjectNo.c_str())); |
||||
|
std::cout << header.VersionNo << " : " << header.VersionNo; |
||||
|
AddLogString(string_format("header.VersionNo : %s", header.VersionNo.c_str())); |
||||
|
|
||||
|
const auto& module_list = project.Modules(); |
||||
|
//ASSERT_EQ(module_list.size(), 1);
|
||||
|
std::cout << module_list.size() << " : " << module_list.size(); |
||||
|
AddLogString(string_format("module_list.size() : %d", module_list.size())); |
||||
|
|
||||
|
|
||||
|
const auto& module = module_list.cbegin()->second; |
||||
|
//ASSERT_TRUE(module);
|
||||
|
|
||||
|
//EXPECT_STREQ(module->Name().c_str(), "Example");
|
||||
|
//EXPECT_FALSE(module->A2ml().empty());
|
||||
|
AddLogString(string_format("module->Name() : %s", module->Name().c_str())); |
||||
|
AddLogString(string_format("module->A2ml() : %s", module->A2ml().c_str())); |
||||
|
|
||||
|
AddLogString(""); |
||||
|
|
||||
|
for (const auto& [protocol, if_data] : module->IfDatas()) { |
||||
|
a2l::IfDataBlock block(if_data); |
||||
|
//EXPECT_TRUE(block.IsOk()) << block.LastError();
|
||||
|
std::cout << block.AsString() << std::endl; |
||||
|
|
||||
|
AddLogString(string_format("IF_DATA : %s", block.Protocol().c_str())); |
||||
|
AddLogString(string_format("block.ItemList().size() : %d", block.ItemList().size())); |
||||
|
|
||||
|
for (int i = 0; i < block.ItemList().size(); i++) { |
||||
|
AddLogString(string_format("%d block.ItemList() : %s", i, block.ItemList()[i].BlockName.c_str())); |
||||
|
AddLogString(string_format("block.ItemList()[i].ItemList.size() : %d", block.ItemList()[i].ItemList.size())); |
||||
|
|
||||
|
for (int j = 0; j < block.ItemList()[i].ItemList.size(); j++) { |
||||
|
// check digit
|
||||
|
bool bIsDigit = true; |
||||
|
if (j > 0) |
||||
|
TRACE("asdf"); |
||||
|
for (int cnt = 0; cnt < block.ItemList()[i].ItemList[j].Value.size(); cnt++) { |
||||
|
//int value = std::isdigit(block.ItemList()[i].ItemList[j].Value.at(cnt));
|
||||
|
//int alpha = std::isalpha(block.ItemList()[i].ItemList[j].Value.at(cnt));
|
||||
|
//TRACE("[%c][%d][%d]\n", block.ItemList()[i].ItemList[j].Value.at(cnt), value, alpha);
|
||||
|
if (std::isdigit(block.ItemList()[i].ItemList[j].Value.at(cnt)) == 0) |
||||
|
bIsDigit = false; |
||||
|
} |
||||
|
|
||||
|
if (bIsDigit) |
||||
|
AddLogString(string_format("%d : Address 0x%X (%d) : ", j, atoi(block.ItemList()[i].ItemList[j].Value.c_str()), atoi(block.ItemList()[i].ItemList[j].Value.c_str()))); |
||||
|
else |
||||
|
AddLogString(string_format("%d : %s", j, block.ItemList()[i].ItemList[j].Value.c_str())); |
||||
|
|
||||
|
|
||||
|
for (int k = 0; k < (block.ItemList()[i].ItemList[j].ItemList.size()); k++) { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
AddLogString(""); |
||||
|
} |
||||
|
//AddLogString(string_format("block.AsString() : %s", block.AsString().c_str()));
|
||||
|
|
||||
|
AddLogString(""); |
||||
|
} |
||||
|
|
||||
|
AddLogString(""); |
||||
|
const auto& axis_list = module->AxisPtss(); |
||||
|
//EXPECT_GT(axis_list.size(), 1);
|
||||
|
std::cout << "\t\tAXIS PTS" << std::endl; |
||||
|
for (const auto& [pts_name, pts] : axis_list) { |
||||
|
std::cout << pts_name << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& blob_list = module->Blobs(); |
||||
|
//EXPECT_GT(blob_list.size(), 0);
|
||||
|
std::cout << "\t\tBLOB" << std::endl; |
||||
|
for (const auto& [blob_name, blob] : blob_list) { |
||||
|
std::cout << blob_name << " " << blob->Address() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& characteristic_list = module->Characteristics(); |
||||
|
//EXPECT_GT(characteristic_list.size(), 0);
|
||||
|
std::cout << "\t\tCHARACTERISTIC" << std::endl; |
||||
|
for (const auto& [char_name, characteristic] : characteristic_list) { |
||||
|
std::cout << char_name << " " << characteristic->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& compu_method_list = module->CompuMethods(); |
||||
|
//EXPECT_GT(compu_method_list.size(), 0);
|
||||
|
std::cout << "\t\tCOMPU METHOD" << std::endl; |
||||
|
for (const auto& [method_name, method] : compu_method_list) { |
||||
|
std::cout << method_name << " " << method->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& compu_tab_list = module->CompuTabs(); |
||||
|
//EXPECT_GT(compu_tab_list.size(), 0);
|
||||
|
std::cout << "\t\tCOMPU TAB" << std::endl; |
||||
|
for (const auto& [tab_name, tab] : compu_tab_list) { |
||||
|
std::cout << tab_name << " " << tab->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& compu_vtab_list = module->CompuVtabs(); |
||||
|
//EXPECT_GT(compu_vtab_list.size(), 0);
|
||||
|
std::cout << "\t\tCOMPU VTAB" << std::endl; |
||||
|
for (const auto& [vtab_name, vtab] : compu_vtab_list) { |
||||
|
std::cout << vtab_name << " " << vtab->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& compu_vtab_range_list = module->CompuVtabRanges(); |
||||
|
//EXPECT_GT(compu_vtab_range_list.size(), 0);
|
||||
|
std::cout << "\t\tCOMPU VTAB RANGE" << std::endl; |
||||
|
for (const auto& [range_name, range] : compu_vtab_range_list) { |
||||
|
std::cout << range_name << " " << range->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& frame_list = module->Frames(); |
||||
|
// EXPECT_GT(frame_list.size(), 0); No frames in file
|
||||
|
std::cout << "\t\tFRAME" << std::endl; |
||||
|
for (const auto& [frame_name, frame] : frame_list) { |
||||
|
std::cout << frame_name << " " << frame->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& func_list = module->Functions(); |
||||
|
//EXPECT_GT(func_list.size(), 0);
|
||||
|
std::cout << "\t\tFUNCTION" << std::endl; |
||||
|
for (const auto& [func_name, func] : func_list) { |
||||
|
std::cout << func_name << " " << func->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& group_list = module->Groups(); |
||||
|
//EXPECT_GT(group_list.size(), 0);
|
||||
|
std::cout << "\t\tGROUP" << std::endl; |
||||
|
for (const auto& [group_name, group] : group_list) { |
||||
|
std::cout << group_name << " " << group->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& instance_list = module->Instances(); |
||||
|
//EXPECT_GT(instance_list.size(), 0);
|
||||
|
std::cout << "\t\tINSTANCE" << std::endl; |
||||
|
for (const auto& [instance_name, instance] : instance_list) { |
||||
|
std::cout << instance_name << " " << instance->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& meas_list = module->Measurements(); |
||||
|
//EXPECT_GT(meas_list.size(), 0);
|
||||
|
std::cout << "\t\tMEASUREMENT" << std::endl; |
||||
|
for (const auto& [meas_name, meas] : meas_list) { |
||||
|
std::cout << meas_name << " " << meas->Description() << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& rec_list = module->RecordLayouts(); |
||||
|
//EXPECT_GT(rec_list.size(), 0);
|
||||
|
std::cout << "\t\tRECORD LAYOUT" << std::endl; |
||||
|
for (const auto& [rec_name, rec] : rec_list) { |
||||
|
std::cout << rec_name << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& trans_list = module->Transformers(); |
||||
|
//EXPECT_GT(trans_list.size(), 0);
|
||||
|
std::cout << "\t\tTRANSFORMER" << std::endl; |
||||
|
for (const auto& [trans_name, trans] : trans_list) { |
||||
|
std::cout << trans_name << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& taxis_list = module->TypedefAxiss(); |
||||
|
//EXPECT_GT(taxis_list.size(), 0);
|
||||
|
std::cout << "\t\tTYPEDEF AXIS" << std::endl; |
||||
|
for (const auto& [taxis_name, taxis] : taxis_list) { |
||||
|
std::cout << taxis_name << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& tblob_list = module->TypedefBlobs(); |
||||
|
//EXPECT_GT(tblob_list.size(), 0);
|
||||
|
std::cout << "\t\tTYPEDEF BLOB" << std::endl; |
||||
|
for (const auto& [tblob_name, tblob] : tblob_list) { |
||||
|
std::cout << tblob_name << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& tchar_list = module->TypedefCharacteristics(); |
||||
|
//EXPECT_GT(tchar_list.size(), 0);
|
||||
|
std::cout << "\t\tTYPEDEF CHARACTERISTIC" << std::endl; |
||||
|
for (const auto& [tchar_name, tchar] : tchar_list) { |
||||
|
std::cout << tchar_name << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
const auto& tmeas_list = module->TypedefMeasurements(); |
||||
|
//EXPECT_GT(tmeas_list.size(), 0);
|
||||
|
std::cout << "\t\tTYPEDEF MEASUREMENT" << std::endl; |
||||
|
for (const auto& [tmeas_name, tmeas] : tmeas_list) { |
||||
|
std::cout << tmeas_name << std::endl; |
||||
|
} |
||||
|
|
||||
|
std::cout << std::endl; |
||||
|
const auto& tstruct_list = module->TypedefStructures(); |
||||
|
//EXPECT_GT(tstruct_list.size(), 0);
|
||||
|
std::cout << "\t\tTYPEDEF STRUCTURE" << std::endl; |
||||
|
for (const auto& [tstruct_name, tstruct] : tstruct_list) { |
||||
|
std::cout << tstruct_name << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
std::cout << std::endl; |
||||
|
const auto& unit_list = module->Units(); |
||||
|
//EXPECT_GT(unit_list.size(), 0);
|
||||
|
std::cout << "\t\tUNIT" << std::endl; |
||||
|
for (const auto& [unit_name, unit] : unit_list) { |
||||
|
std::cout << unit_name << std::endl; |
||||
|
} |
||||
|
std::cout << std::endl; |
||||
|
|
||||
|
a2l::A2mlBlock a2ml_block(module->A2ml()); |
||||
|
const auto& a2ml = module->A2ml(); |
||||
|
const auto a2ml_parse = a2ml_block.IsOk(); |
||||
|
|
||||
|
//EXPECT_TRUE(a2ml_parse) << a2ml_block.LastError();
|
||||
|
/*
|
||||
|
const auto& block_list = a2ml_scanner.BlockList(); |
||||
|
for (const auto& block : block_list) { |
||||
|
std::cout << block.AsString() << std::endl; |
||||
|
} |
||||
|
*/ |
||||
|
} |
||||
|
|
||||
|
void CTestLibDlgDlg::AddLogString(std::string strMessage) |
||||
|
{ |
||||
|
CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST_DATA); |
||||
|
std::wstring message_w; |
||||
|
message_w.assign(strMessage.begin(), strMessage.end()); |
||||
|
|
||||
|
pListBox->AddString(message_w.c_str()); |
||||
|
} |
||||
@ -0,0 +1,64 @@ |
|||||
|
|
||||
|
// TestLibDlgDlg.h: 헤더 파일
|
||||
|
//
|
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <chrono> |
||||
|
#include <filesystem> |
||||
|
#include <map> |
||||
|
#include <string> |
||||
|
|
||||
|
#include "a2l/a2lfile.h" |
||||
|
#include "a2l/a2mlblock.h" |
||||
|
#include "a2l/ifdatablock.h" |
||||
|
|
||||
|
using namespace std::filesystem; |
||||
|
using namespace std::chrono_literals; |
||||
|
|
||||
|
class CTestLibDlgDlgAutoProxy; |
||||
|
|
||||
|
|
||||
|
// CTestLibDlgDlg 대화 상자
|
||||
|
class CTestLibDlgDlg : public CDialogEx |
||||
|
{ |
||||
|
DECLARE_DYNAMIC(CTestLibDlgDlg); |
||||
|
friend class CTestLibDlgDlgAutoProxy; |
||||
|
|
||||
|
// 생성입니다.
|
||||
|
public: |
||||
|
CTestLibDlgDlg(CWnd* pParent = nullptr); // 표준 생성자입니다.
|
||||
|
virtual ~CTestLibDlgDlg(); |
||||
|
|
||||
|
// 대화 상자 데이터입니다.
|
||||
|
#ifdef AFX_DESIGN_TIME |
||||
|
enum { IDD = IDD_TESTLIBDLG_DIALOG }; |
||||
|
#endif |
||||
|
|
||||
|
protected: |
||||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
||||
|
|
||||
|
|
||||
|
// 구현입니다.
|
||||
|
protected: |
||||
|
CTestLibDlgDlgAutoProxy* m_pAutoProxy; |
||||
|
HICON m_hIcon; |
||||
|
|
||||
|
BOOL CanExit(); |
||||
|
|
||||
|
// 생성된 메시지 맵 함수
|
||||
|
virtual BOOL OnInitDialog(); |
||||
|
afx_msg void OnSysCommand(UINT nID, LPARAM lParam); |
||||
|
afx_msg void OnPaint(); |
||||
|
afx_msg HCURSOR OnQueryDragIcon(); |
||||
|
afx_msg void OnClose(); |
||||
|
virtual void OnOK(); |
||||
|
virtual void OnCancel(); |
||||
|
DECLARE_MESSAGE_MAP() |
||||
|
public: |
||||
|
afx_msg void OnBnClickedButton1(); |
||||
|
|
||||
|
private: |
||||
|
void loadA2lFile(std::string strFilePath); |
||||
|
void AddLogString(std::string strMessage); |
||||
|
}; |
||||
@ -0,0 +1,226 @@ |
|||||
|
|
||||
|
|
||||
|
/* this ALWAYS GENERATED file contains the definitions for the interfaces */ |
||||
|
|
||||
|
|
||||
|
/* File created by MIDL compiler version 8.01.0628 */ |
||||
|
/* at Tue Jan 19 12:14:07 2038
|
||||
|
*/ |
||||
|
/* Compiler settings for TestLibDlg.idl:
|
||||
|
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0628 |
||||
|
protocol : dce , ms_ext, c_ext, robust |
||||
|
error checks: allocation ref bounds_check enum stub_data |
||||
|
VC __declspec() decoration level: |
||||
|
__declspec(uuid()), __declspec(selectany), __declspec(novtable) |
||||
|
DECLSPEC_UUID(), MIDL_INTERFACE() |
||||
|
*/ |
||||
|
/* @@MIDL_FILE_HEADING( ) */ |
||||
|
|
||||
|
|
||||
|
|
||||
|
/* verify that the <rpcndr.h> version is high enough to compile this file*/ |
||||
|
#ifndef __REQUIRED_RPCNDR_H_VERSION__ |
||||
|
#define __REQUIRED_RPCNDR_H_VERSION__ 500 |
||||
|
#endif |
||||
|
|
||||
|
#include "rpc.h" |
||||
|
#include "rpcndr.h" |
||||
|
|
||||
|
#ifndef __RPCNDR_H_VERSION__ |
||||
|
#error this stub requires an updated version of <rpcndr.h> |
||||
|
#endif /* __RPCNDR_H_VERSION__ */ |
||||
|
|
||||
|
|
||||
|
#ifndef __TestLibDlg_h_h__ |
||||
|
#define __TestLibDlg_h_h__ |
||||
|
|
||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020) |
||||
|
#pragma once |
||||
|
#endif |
||||
|
|
||||
|
#ifndef DECLSPEC_XFGVIRT |
||||
|
#if defined(_CONTROL_FLOW_GUARD_XFG) |
||||
|
#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func)) |
||||
|
#else |
||||
|
#define DECLSPEC_XFGVIRT(base, func) |
||||
|
#endif |
||||
|
#endif |
||||
|
|
||||
|
/* Forward Declarations */ |
||||
|
|
||||
|
#ifndef __ITestLibDlg_FWD_DEFINED__ |
||||
|
#define __ITestLibDlg_FWD_DEFINED__ |
||||
|
typedef interface ITestLibDlg ITestLibDlg; |
||||
|
|
||||
|
#endif /* __ITestLibDlg_FWD_DEFINED__ */ |
||||
|
|
||||
|
|
||||
|
#ifndef __TestLibDlg_FWD_DEFINED__ |
||||
|
#define __TestLibDlg_FWD_DEFINED__ |
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
typedef class TestLibDlg TestLibDlg; |
||||
|
#else |
||||
|
typedef struct TestLibDlg TestLibDlg; |
||||
|
#endif /* __cplusplus */ |
||||
|
|
||||
|
#endif /* __TestLibDlg_FWD_DEFINED__ */ |
||||
|
|
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
extern "C"{ |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
|
||||
|
#ifndef __TestLibDlg_LIBRARY_DEFINED__ |
||||
|
#define __TestLibDlg_LIBRARY_DEFINED__ |
||||
|
|
||||
|
/* library TestLibDlg */ |
||||
|
/* [version][uuid] */ |
||||
|
|
||||
|
|
||||
|
EXTERN_C const IID LIBID_TestLibDlg; |
||||
|
|
||||
|
#ifndef __ITestLibDlg_DISPINTERFACE_DEFINED__ |
||||
|
#define __ITestLibDlg_DISPINTERFACE_DEFINED__ |
||||
|
|
||||
|
/* dispinterface ITestLibDlg */ |
||||
|
/* [uuid] */ |
||||
|
|
||||
|
|
||||
|
EXTERN_C const IID DIID_ITestLibDlg; |
||||
|
|
||||
|
#if defined(__cplusplus) && !defined(CINTERFACE) |
||||
|
|
||||
|
MIDL_INTERFACE("3d30aa0d-19ce-4ca6-92b1-70a7403d578c") |
||||
|
ITestLibDlg : public IDispatch |
||||
|
{ |
||||
|
}; |
||||
|
|
||||
|
#else /* C style interface */ |
||||
|
|
||||
|
typedef struct ITestLibDlgVtbl |
||||
|
{ |
||||
|
BEGIN_INTERFACE |
||||
|
|
||||
|
DECLSPEC_XFGVIRT(IUnknown, QueryInterface) |
||||
|
HRESULT ( STDMETHODCALLTYPE *QueryInterface )( |
||||
|
ITestLibDlg * This, |
||||
|
/* [in] */ REFIID riid, |
||||
|
/* [annotation][iid_is][out] */ |
||||
|
_COM_Outptr_ void **ppvObject); |
||||
|
|
||||
|
DECLSPEC_XFGVIRT(IUnknown, AddRef) |
||||
|
ULONG ( STDMETHODCALLTYPE *AddRef )( |
||||
|
ITestLibDlg * This); |
||||
|
|
||||
|
DECLSPEC_XFGVIRT(IUnknown, Release) |
||||
|
ULONG ( STDMETHODCALLTYPE *Release )( |
||||
|
ITestLibDlg * This); |
||||
|
|
||||
|
DECLSPEC_XFGVIRT(IDispatch, GetTypeInfoCount) |
||||
|
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( |
||||
|
ITestLibDlg * This, |
||||
|
/* [out] */ UINT *pctinfo); |
||||
|
|
||||
|
DECLSPEC_XFGVIRT(IDispatch, GetTypeInfo) |
||||
|
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( |
||||
|
ITestLibDlg * This, |
||||
|
/* [in] */ UINT iTInfo, |
||||
|
/* [in] */ LCID lcid, |
||||
|
/* [out] */ ITypeInfo **ppTInfo); |
||||
|
|
||||
|
DECLSPEC_XFGVIRT(IDispatch, GetIDsOfNames) |
||||
|
HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( |
||||
|
ITestLibDlg * This, |
||||
|
/* [in] */ REFIID riid, |
||||
|
/* [size_is][in] */ LPOLESTR *rgszNames, |
||||
|
/* [range][in] */ UINT cNames, |
||||
|
/* [in] */ LCID lcid, |
||||
|
/* [size_is][out] */ DISPID *rgDispId); |
||||
|
|
||||
|
DECLSPEC_XFGVIRT(IDispatch, Invoke) |
||||
|
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( |
||||
|
ITestLibDlg * This, |
||||
|
/* [annotation][in] */ |
||||
|
_In_ DISPID dispIdMember, |
||||
|
/* [annotation][in] */ |
||||
|
_In_ REFIID riid, |
||||
|
/* [annotation][in] */ |
||||
|
_In_ LCID lcid, |
||||
|
/* [annotation][in] */ |
||||
|
_In_ WORD wFlags, |
||||
|
/* [annotation][out][in] */ |
||||
|
_In_ DISPPARAMS *pDispParams, |
||||
|
/* [annotation][out] */ |
||||
|
_Out_opt_ VARIANT *pVarResult, |
||||
|
/* [annotation][out] */ |
||||
|
_Out_opt_ EXCEPINFO *pExcepInfo, |
||||
|
/* [annotation][out] */ |
||||
|
_Out_opt_ UINT *puArgErr); |
||||
|
|
||||
|
END_INTERFACE |
||||
|
} ITestLibDlgVtbl; |
||||
|
|
||||
|
interface ITestLibDlg |
||||
|
{ |
||||
|
CONST_VTBL struct ITestLibDlgVtbl *lpVtbl; |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
|
||||
|
#ifdef COBJMACROS |
||||
|
|
||||
|
|
||||
|
#define ITestLibDlg_QueryInterface(This,riid,ppvObject) \ |
||||
|
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) |
||||
|
|
||||
|
#define ITestLibDlg_AddRef(This) \ |
||||
|
( (This)->lpVtbl -> AddRef(This) ) |
||||
|
|
||||
|
#define ITestLibDlg_Release(This) \ |
||||
|
( (This)->lpVtbl -> Release(This) ) |
||||
|
|
||||
|
|
||||
|
#define ITestLibDlg_GetTypeInfoCount(This,pctinfo) \ |
||||
|
( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) |
||||
|
|
||||
|
#define ITestLibDlg_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ |
||||
|
( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) |
||||
|
|
||||
|
#define ITestLibDlg_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ |
||||
|
( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) |
||||
|
|
||||
|
#define ITestLibDlg_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ |
||||
|
( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) |
||||
|
|
||||
|
#endif /* COBJMACROS */ |
||||
|
|
||||
|
|
||||
|
#endif /* C style interface */ |
||||
|
|
||||
|
|
||||
|
#endif /* __ITestLibDlg_DISPINTERFACE_DEFINED__ */ |
||||
|
|
||||
|
|
||||
|
EXTERN_C const CLSID CLSID_TestLibDlg; |
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
|
||||
|
class DECLSPEC_UUID("faa0893c-64ec-4ba5-b1f0-18ed8cb7f106") |
||||
|
TestLibDlg; |
||||
|
#endif |
||||
|
#endif /* __TestLibDlg_LIBRARY_DEFINED__ */ |
||||
|
|
||||
|
/* Additional Prototypes for ALL interfaces */ |
||||
|
|
||||
|
/* end of Additional Prototypes */ |
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
} |
||||
|
#endif |
||||
|
|
||||
|
#endif |
||||
|
|
||||
|
|
||||
@ -0,0 +1,84 @@ |
|||||
|
|
||||
|
|
||||
|
/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */ |
||||
|
|
||||
|
/* link this file in with the server and any clients */ |
||||
|
|
||||
|
|
||||
|
/* File created by MIDL compiler version 8.01.0628 */ |
||||
|
/* at Tue Jan 19 12:14:07 2038
|
||||
|
*/ |
||||
|
/* Compiler settings for TestLibDlg.idl:
|
||||
|
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0628 |
||||
|
protocol : dce , ms_ext, c_ext, robust |
||||
|
error checks: allocation ref bounds_check enum stub_data |
||||
|
VC __declspec() decoration level: |
||||
|
__declspec(uuid()), __declspec(selectany), __declspec(novtable) |
||||
|
DECLSPEC_UUID(), MIDL_INTERFACE() |
||||
|
*/ |
||||
|
/* @@MIDL_FILE_HEADING( ) */ |
||||
|
|
||||
|
|
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
extern "C"{ |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
#include <rpc.h> |
||||
|
#include <rpcndr.h> |
||||
|
|
||||
|
#ifdef _MIDL_USE_GUIDDEF_ |
||||
|
|
||||
|
#ifndef INITGUID |
||||
|
#define INITGUID |
||||
|
#include <guiddef.h> |
||||
|
#undef INITGUID |
||||
|
#else |
||||
|
#include <guiddef.h> |
||||
|
#endif |
||||
|
|
||||
|
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ |
||||
|
DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) |
||||
|
|
||||
|
#else // !_MIDL_USE_GUIDDEF_
|
||||
|
|
||||
|
#ifndef __IID_DEFINED__ |
||||
|
#define __IID_DEFINED__ |
||||
|
|
||||
|
typedef struct _IID |
||||
|
{ |
||||
|
unsigned long x; |
||||
|
unsigned short s1; |
||||
|
unsigned short s2; |
||||
|
unsigned char c[8]; |
||||
|
} IID; |
||||
|
|
||||
|
#endif // __IID_DEFINED__
|
||||
|
|
||||
|
#ifndef CLSID_DEFINED |
||||
|
#define CLSID_DEFINED |
||||
|
typedef IID CLSID; |
||||
|
#endif // CLSID_DEFINED
|
||||
|
|
||||
|
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ |
||||
|
EXTERN_C __declspec(selectany) const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} |
||||
|
|
||||
|
#endif // !_MIDL_USE_GUIDDEF_
|
||||
|
|
||||
|
MIDL_DEFINE_GUID(IID, LIBID_TestLibDlg,0xe6371bfe,0x4bde,0x4d88,0xb4,0x04,0x1d,0x2f,0x22,0x2f,0x1d,0xdf); |
||||
|
|
||||
|
|
||||
|
MIDL_DEFINE_GUID(IID, DIID_ITestLibDlg,0x3d30aa0d,0x19ce,0x4ca6,0x92,0xb1,0x70,0xa7,0x40,0x3d,0x57,0x8c); |
||||
|
|
||||
|
|
||||
|
MIDL_DEFINE_GUID(CLSID, CLSID_TestLibDlg,0xfaa0893c,0x64ec,0x4ba5,0xb1,0xf0,0x18,0xed,0x8c,0xb7,0xf1,0x06); |
||||
|
|
||||
|
#undef MIDL_DEFINE_GUID |
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
} |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
|
||||
@ -0,0 +1,60 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#ifndef VC_EXTRALEAN |
||||
|
#define VC_EXTRALEAN // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다.
|
||||
|
#endif |
||||
|
|
||||
|
#include "targetver.h" |
||||
|
|
||||
|
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 일부 CString 생성자는 명시적으로 선언됩니다.
|
||||
|
|
||||
|
// MFC의 공통 부분과 무시 가능한 경고 메시지에 대한 숨기기를 해제합니다.
|
||||
|
#define _AFX_ALL_WARNINGS |
||||
|
|
||||
|
#include <afxwin.h> // MFC 핵심 및 표준 구성 요소입니다. |
||||
|
#include <afxext.h> // MFC 확장입니다. |
||||
|
|
||||
|
|
||||
|
#include <afxdisp.h> // MFC 자동화 클래스입니다. |
||||
|
|
||||
|
|
||||
|
|
||||
|
#ifndef _AFX_NO_OLE_SUPPORT |
||||
|
#include <afxdtctl.h> // Internet Explorer 4 공용 컨트롤에 대한 MFC 지원입니다. |
||||
|
#endif |
||||
|
#ifndef _AFX_NO_AFXCMN_SUPPORT |
||||
|
#include <afxcmn.h> // Windows 공용 컨트롤에 대한 MFC 지원입니다. |
||||
|
#endif // _AFX_NO_AFXCMN_SUPPORT
|
||||
|
|
||||
|
#include <afxcontrolbars.h> // MFC의 리본 및 컨트롤 막대 지원 |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
// 이 매크로는 TRUE를 전달한다는 점을 제외하면 IMPLEMENT_OLECREATE와 동일합니다
|
||||
|
// 전달하는 점만 제외하면 IMPLEMENT_OLECREATE와 같습니다.
|
||||
|
// 자동화 컨트롤러에서 요청한 각 자동화 프록시 개체에 대해
|
||||
|
// 이 응용 프로그램에 대한 별도의 인스턴스가 시작되도록 합니다.
|
||||
|
#ifndef IMPLEMENT_OLECREATE2 |
||||
|
#define IMPLEMENT_OLECREATE2(class_name, external_name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ |
||||
|
AFX_DATADEF COleObjectFactory class_name::factory(class_name::guid, \ |
||||
|
RUNTIME_CLASS(class_name), TRUE, _T(external_name)); \ |
||||
|
const AFX_DATADEF GUID class_name::guid = \ |
||||
|
{ l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; |
||||
|
#endif // IMPLEMENT_OLECREATE2
|
||||
|
|
||||
|
#ifdef _UNICODE |
||||
|
#if defined _M_IX86 |
||||
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") |
||||
|
#elif defined _M_X64 |
||||
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") |
||||
|
#else |
||||
|
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") |
||||
|
#endif |
||||
|
#endif |
||||
|
|
||||
|
|
||||
@ -0,0 +1,5 @@ |
|||||
|
// pch.cpp: 미리 컴파일된 헤더에 해당하는 소스 파일
|
||||
|
|
||||
|
#include "pch.h" |
||||
|
|
||||
|
// 미리 컴파일된 헤더를 사용하는 경우 컴파일이 성공하려면 이 소스 파일이 필요합니다.
|
||||
@ -0,0 +1,13 @@ |
|||||
|
// pch.h: 미리 컴파일된 헤더 파일입니다.
|
||||
|
// 아래 나열된 파일은 한 번만 컴파일되었으며, 향후 빌드에 대한 빌드 성능을 향상합니다.
|
||||
|
// 코드 컴파일 및 여러 코드 검색 기능을 포함하여 IntelliSense 성능에도 영향을 미칩니다.
|
||||
|
// 그러나 여기에 나열된 파일은 빌드 간 업데이트되는 경우 모두 다시 컴파일됩니다.
|
||||
|
// 여기에 자주 업데이트할 파일을 추가하지 마세요. 그러면 성능이 저하됩니다.
|
||||
|
|
||||
|
#ifndef PCH_H |
||||
|
#define PCH_H |
||||
|
|
||||
|
// 여기에 미리 컴파일하려는 헤더 추가
|
||||
|
#include "framework.h" |
||||
|
|
||||
|
#endif //PCH_H
|
||||
|
After Width: | Height: | Size: 66 KiB |
Binary file not shown.
@ -0,0 +1,23 @@ |
|||||
|
//{{NO_DEPENDENCIES}}
|
||||
|
// Microsoft Visual C++에서 생성한 포함 파일입니다.
|
||||
|
// TestLibDlg.rc에서 사용되고 있습니다.
|
||||
|
//
|
||||
|
#define IDM_ABOUTBOX 0x0010 |
||||
|
#define IDD_ABOUTBOX 100 |
||||
|
#define IDP_OLE_INIT_FAILED 100 |
||||
|
#define IDS_ABOUTBOX 101 |
||||
|
#define IDD_TESTLIBDLG_DIALOG 102 |
||||
|
#define IDR_MAINFRAME 128 |
||||
|
#define IDC_LIST_DATA 1001 |
||||
|
#define IDC_BUTTON1 1002 |
||||
|
|
||||
|
// Next default values for new objects
|
||||
|
//
|
||||
|
#ifdef APSTUDIO_INVOKED |
||||
|
#ifndef APSTUDIO_READONLY_SYMBOLS |
||||
|
#define _APS_NEXT_RESOURCE_VALUE 130 |
||||
|
#define _APS_NEXT_COMMAND_VALUE 32771 |
||||
|
#define _APS_NEXT_CONTROL_VALUE 1003 |
||||
|
#define _APS_NEXT_SYMED_VALUE 101 |
||||
|
#endif |
||||
|
#endif |
||||
@ -0,0 +1,8 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
// SDKDDKVer.h를 포함하면 최고 수준의 가용성을 가진 Windows 플랫폼이 정의됩니다.
|
||||
|
|
||||
|
// 이전 Windows 플랫폼에 대해 애플리케이션을 빌드하려는 경우에는 SDKDDKVer.h를 포함하기 전에
|
||||
|
// WinSDKVer.h를 포함하고 _WIN32_WINNT 매크로를 지원하려는 플랫폼으로 설정하십시오.
|
||||
|
|
||||
|
#include <SDKDDKVer.h> |
||||
Loading…
Reference in new issue