1. CLR (Common Language Runtime)은?
- CLR은 마이크로소프트의 .NET 프레임워크에서 프로그램을 실행하는 환경입니다.
- CLR은 C#, VB.NET, F# 등 다양한 언어로 작성된 코드를 실행할 수 있도록 지원합니다.
- CLR은 코드의 실행, 메모리 관리 (가비지 컬렉션), 보안, 예외 처리 등의 기능을 제공합니다.
2. Window Forms 컨트롤 라이브러리 사용
1) C#에서 라이브러리 (.dll)을 생성한다.
2) MFC 프로젝트를 생성한다.
3) MFC 프로젝트의 속성 중에서 아래와 같이 <공용 언어 런타임 지원> 속성을 .NET Framework 런타임 지원(/clr)로 설정한다.
4) 윈도우를 생성한 후 컨트롤과 관련 된코드를 추가한다. (예: 다이얼로그)
- 헤더파일(.h)에 컨트롤 라이브러리에서 사용하려는 컨트롤을 아래와 같은 형식으로 변수로 선언한다.
CWinFormsControl<컨트롤_라이브러리의_nammespace:: 컨트롤_라이브러리의_컨트롤명> 변수명;
예: CWinFormsControl<MyControls::MyLabel> m_Name;
- 소스파일(.cpp)의 DoDataExchange(CDataExchange* pDX) 함수에서
선언한 변수와 컨트롤을 연결하기 위해서 아래와 같이 코드를 추가한다.
DDX_ManagedControl(pDX, 컨트롤ID, 변수명);
예: DDX_ManagedControl(pDX, IDC_MYLABEL, m_Name);
- 컨트롤에서 발생하는 이벤트를 처리하기 위해서는 아래처럼 코드를 추가한다.
헤더파일에 아래와 같은 코드를 추가하고
public:
BEGIN_DELEGATE_MAP( CMFCTestDialog )
//EVENT_DELEGATE_ENTRY( 이벤트명칭, 이벤트발생컨트롤^, 이벤트정보를담고있는매개변수^ )
EVENT_DELEGATE_ENTRY( OnClick, System::Object^, System::EventArgs^ )
END_DELEGATE_MAP()
//void 이벤트명 (이벤트발생컨트롤^ 변수명1, 이벤트정보를담고있는매개변수^ 변수명2);
예: void OnClick( System::Object^ sender, System::EventArgs^ e );
그리고 소스파일(.cpp)에서 컨트롤이 표시되기 전에 처리되는 함수 즉, 다이얼로그의 OnInitDialog() 함수 속에
아래와 같은 형식으로 코드를 추가한다.
//변수명.이벤트명 += MAKE_DELEGATE( System::EventHandler, OnClick );
예: m_ctrl1.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
BEGIN_DELEGATE_MAP 매크로는,
Windows Form 컨트롤에서 발생한 이벤트(Managed Event)에 대한 Call-Back 처리가 가능하도록 연결다.
그러므로 .NET 사용자 컨트롤에서 발생한 버튼 클릭 이벤트는 .NET 코드에서 먼저 처리되고,
연결된 C++ 다이얼로그 클래스에 구현된 OnClick 함수를 통하여 처리된다.
'유용한 정보' 카테고리의 다른 글
[C#] 사용자 정의 달력 (0) | 2025.05.14 |
---|---|
[C#] DataGridView 자동 행 번호 생성하는 방법(예제) (0) | 2025.05.05 |
[C#] 사용자 정의 이벤트 등록 및 사용 예제 (0) | 2025.04.27 |
[C#] MonthCalendar 요일 클릭하기 (0) | 2025.04.24 |
Windows 10에서 Visual Studio 6(vc6.0) 설치 방법 (2) | 2025.04.22 |