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 |