Programing/MFC

MFC 다이얼로그 위에 C# Winform 사용하기

Ezzi 2016. 1. 21. 13:11
반응형



C#의 강력하고 편리한 콘트롤 들을 MFC에서도 사용할 수는 없을까?


C#에 한번 길들여 지면 다시는 MFC로 돌아가고 싶지 않은 마음은 다 비슷할 거라고 생각합니다. 


그래서 여기저기 찾아본 결과 MSDN에서 정보를 찾을 수 있었습니다.


https://msdn.microsoft.com/en-us/library/b1kyh79x.aspx


일단 제가 참고한 MSDN링크 입니다. 




1. 비쥬얼 스튜디오를 열고 C# Windows Form 라이브러리 프로젝트를 만들어 줍니다.



2. 생성된 프로젝트를 보면 UserControl1 이라는 콘트롤이 보이는데 도구상자를 열어 그 위에 버튼이나 원하시는 컨트롤을 한두개 올려 줍니다.

  그리고 UserControl1.Designer.cs 로 가서 만들어준 버튼이나 컨트롤의 정의를 Public으로 변경해 줍니다.


퍼블릭으로 변경




버튼1을 클릭하면 다음과 같이 메세지 박스가 열리도록 간단한 코드를 작성해 볼까요.



3. 그리고 빌드를 한번 해줍니다.


4. 이제 같은 솔루션에 새프로젝트 추가를 클릭하여 MFC 응용 프로그램 프로젝트를 대화 상자 기반으로 생성해 줍니다.


5. 생성된 MFC 프로젝트에서 리소스 뷰로 이동하여 다이얼로그 위에 Static 콘트롤 하나를 더하고 다음 그림과 같이 다이얼로그 사이즈에 맞게

크기를 조절 합니다.





6. MFC 다이얼로그 프로젝트의 속성창을 열어서 다음 속성들을 변경해 줍니다.


(1) 일반 -> 공용 언어 런타임 지원 : 공용 언어 런타임 지원(/clr) 으로 변경

(2) C/C++  ->  일반  -> 디버그 정보 형식 : 프로그램 데이터베이스 (/Zi)

(3) C/C++  ->  코드 생성  -> 최소 다시 빌드 가능 : 아니요 (/Gm-)

(4) C/C++  ->  코드 생성  -> 기본 런타임 검사 : 기본값


7. MFC 속성 창을 다시 열고 공용 속성에서 새 참조 추가를 클릭하여 WindowsFormsControlLibrary1를 등록 해준다.




새 참조추가를 누른다.



프로젝트 탭으로 이동하여 WindowsFormsControlLibrary1 프로젝트를 선택하고 확인



확인하면 다음과 같이 추가가 되었습니다.


8.  MFC 프로젝트에  Stdafx.h 로 이동하여   #include <afxwinforms.h> 를 추가 해준다. 




9. MFC Dialog 의 소스의 헤더에 윈폼 콘트롤 변수를 생성해준다.




10. CPP로 이동하여 DoDataExchange 에   다음 문구를 입력해 준다.

DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1);


 IDC_CTRL1 은 5번에서 만들었던 Static 콘트롤의 ID 이다.


11. MFC 프로젝트를 시작 프로젝트로 설정 한 뒤에 빌드한다.






프로그램을 실행한 뒤에 버튼을 누르면 이와 같이 메세지 박스가 뜨는 것을 확인할 수가 있습니다.








반응형