출처 Dontcryme | dontcryme
원문 http://dontcryme.blog.me/30050646054

 

안녕하세요.

 

본 글은 다름아닌

MFC 기반에서 C#에서 만든 UserControl을 사용하는 방법에 대해서

설명드릴까 합니다.

 

먼저 아래와 같이 간단한 C# UserControl 을 하나 만듭니다.

(필요에 따라 '코프'에서 하날 받으셔도 됩니다.)

 

* UserControl을 만드는 과정을 설명하는 부분이 아니기 때문에 그림으로 과정설명은 대신합니다.

(1) Windows Forms 컨트롤 라이브러리를 선택 후 적당한 이름을 입력합니다.

 

 

(2) 간단하게 버튼하나가 들어간 UserControl을 생성합니다.

 

 

 

말 그대로 간단하게 하는 작업은 없고

 

10 namespace TestCSharpControlLibrary

11 {

12 public partial class UserControl1 : UserControl

13 {

14 public UserControl1()

15 {

16 InitializeComponent();

17 }

18

19 private void button1_Click(object sender, EventArgs e)

20 {

21 MessageBox.Show("Test 입니다.");

22 }

23 }

24 }

위 처럼 메세지 박스 하나 띄우는게 고작입니다.

자 그럼 빌드후에 생긴 Dll을 이용해 Test를 위해

MFC Dialog Based 프로젝트를 하나 생성합니다.

(생성과정은 생략)

(1) 아래와 같이 우선 "Static Text" 컨트롤을 하나 올려 놉니다.

후에 C# UserControl과 연결시키기 위해서...

(2) 다음은 기본 MFC 속성에서 공용언어 런타임 세팅을 "../clr" 이하로 바꿔 줍니다.

(3) 이제 남은 작업은 전에 만든 C# UserControl Dll을 참조해 주는 것과 사용하기 위해 컨트롤을 DDX 연결 시켜 주는 작업 등입니다.

- 먼저 아래와 같이 참조로 좀전에 생성된 dll을 걸어 줍니다.

[참조에 등록]

- 해당 MFC stdafx.h 내부의 아래에 Winform 형태의 사용을 위해 다음의 라인을 추가 합니다.

34 #include <afxcmn.h> // Windows 공용 컨트롤에 대한 MFC 지원입니다.

35 //헤더 추가

36 #include <afxwinforms.h> ->이녀석

37 //

38 #endif // _AFX_NO_AFXCMN_SUPPORT

- 컨트롤 사용을 위한 두 가지의 작업이 남았습니다. 먼저 생성한 Static Control연결을 위한 DDX를 위해

34 CWinFormsControl<TestCSharpControlLibrary::UserControl1> m_Ctrl;

형식 - [NamespaceName::ClassName]

위와 같이 해당 UserControl 객체를 선언한 뒤

59 DDX_ManagedControl(pDX, IDC_STATIC1, m_Ctrl);

위와 같이 DDX를 작성 후 빌드하면

위와 같습니다.^^

좋은 하루 되세요~~

 

'프로그래밍 > VC++ 개발 코딩' 카테고리의 다른 글

[본문스크랩] 쓰레드의 동기화  (0) 2014.01.17
GetMessage / PeekMessage 차이 설명  (0) 2014.01.17
마우스 라인 그리기  (0) 2014.01.17
WaitForMultipleObjects 사용  (0) 2014.01.17
출력 디렉토리  (0) 2014.01.17

+ Recent posts