2010-06-22 5 views
2

Intermec에서 만든 견고한 비즈니스 모바일 장치에서 실행되는 레거시 C++ 응용 프로그램을 만들고 있습니다. 몇 가지 기능을 추가해야하고 WinForms를 사용하여 기능을 구축하고 싶습니다. 아이디어는 사용자가 이전 응용 프로그램에서 WinForms 화면을 실행하는 버튼을 클릭한다는 것입니다. 그런 다음 몇 가지 작업을 수행하고 확인을 클릭하여 C++ 응용 프로그램에 반환합니다.WinForms로 기존 C++ Windows 응용 프로그램 확장

질문은, 어떻게 든 WinForms를 모달 대화 상자로 열고 2 개의 응용 프로그램간에 정보를 전달할 수 있도록 C++ 응용 프로그램 내에 Winforms 응용 프로그램을 "포함"할 수 있습니까?

도움 주셔서 대단히 감사드립니다.

건배

마크

+0

대신 레거시 응용 프로그램을 다시 작성할 수 있습니까? –

+0

@Andrew : WinForms에서 하나의 대화 상자를 얻으려고 전체 응용 프로그램을 다시 작성하는 것이 심각한 과잉이라고 생각됩니다. @ 마크 : 쓰여진 C++ 물건은 무엇입니까? Visual C++? –

+0

네,하지만 레거시 + .net을 지원할 수도 있습니다. 응용 프로그램을 더 개발하는 경향이 있다면 .net 부분 통합은 과잉 공격이 될 것입니다. –

답변

2

먼저의 컴팩트 프레임 워크 하지 전체 프레임 워크 따라서 바탕 화면에서 작동 많은 것들을 것을 명확하게하는 데 도움이된다 바랍니다.

하나의 옵션을 사용하는 데는 여러 가지 방법이 있지만 실제로는 하나의 옵션 만 있습니다. Compact Framework는 EE 호스팅을 지원하지 않으므로 (즉, 기본 응용 프로그램에서 CLR을로드하는 경우) 관리되는 코드를 실행하기위한 유일한 옵션은 관리되는 응용 프로그램을 작성하고 실행하는 것입니다. 기간.

이제 내가 말했듯이, 당신이 이것에 대해 어떻게 생각하는지에 대한 옵션이 있습니다. 예를 들어, MFC 응용 프로그램을 실행하고 Form없이 실행하면 응용 프로그램을 시작할 수 있습니다. 그런 다음 IPC 형식을 사용합니다 (point to point queues이 가장 적합 할 수 있지만 memory-mapped file도 유용 할 수 있습니다). 그런 다음 응용 프로그램 "이야기하다". 따라서 C++ 응용 프로그램은 "Show Form A"라는 메시지를 보낼 수 있으며 Form A가 닫히면 관리되는 응용 프로그램이 데이터를 다시 보낼 수 있습니다.

+0

매우 감사합니다. 나는 다른 제안을 체크 아웃 할 기회를 얻지 못했지만 이것이 사실이라고 의심했다. 당신은 저에게 많은 시간을 저축했습니다 :) –

-1

예, CCW를 사용하여 (COM 호출 가능 래퍼)가 여기에 자세한 내용을보실 것을 수행 할 수 있습니다 - http://www.codeproject.com/KB/atl/ComWarpperForDotNet.aspx

+1

감사합니다. 그것을 밖으로 검사하겠습니다 :) –

+1

이것은 작동하지 않습니다. CF에서 관리되는 COM 구성 요소를 만들 수 없습니다. – ctacke

+0

위대한 .. 누가 당신에게 말 했나요? – thatsalok

0

VS2005에 대한 MFC and WinForms Integration Demo 있습니다. 하지당신을 위해 작동하는 것이

+0

쿨 - 고마워. 나는 조사 할 것이다. 첫 번째 질문은이 항목이 Windows Mobile에서 지원되는지 여부입니다. –

+1

CF에서는 지원되지 않으므로 너무 많은 사이클을 보지 마십시오. – ctacke

관련 문제