2009-02-05 4 views
1

저는 VS 2008을 사용하여 Vista에서 리본 응용 프로그램을 개발했습니다. Vista에서는 잘 작동합니다. 정적으로 MFC를 링크하여 XP에서도 실행할 수 있습니다.Windows XP MFC 리본 응용 프로그램을 실행하는 "부적절한 인수가 발생했습니다"

하지만 XP에서 실행할 때 "필요한 리소스를 사용할 수 없습니다"라는 대화 상자가 표시됩니다. 나중에이 대화 상자에서 확인을 누르면 "부적절한 인수가 발생했습니다"라는 메시지가 표시됩니다. 작업 관리자에서 종료 할 때까지 이러한 많은 ("발생했습니다 ....") 대화 상자가 차례대로 진행됩니다.

내가 알아 차린 흥미로운 사실은이 상황이 리본 바 위에 마우스 포인터를 놓을 때 발생한다는 것입니다. 나는 아무것도하지 않는다. 그런 다음 작업 관리자를 열고 사용 된 메모리가 매초마다 8 바이트 씩 증가하는지 확인합니다. 결국 위의 시나리오가 뒤 따른다.

?????

+0

@Ron, 나는 "XP 시스템에 MFC 기능 팩을 설치하려고 시도했지만 3 번 실패했습니다."라고 생각합니다. 대답에 대한 설명이 아닌 질문을하는 것을 보증 할만큼 중요합니다. 필자는이 기능 팩을 설치하지 않은 상태에서 소프트웨어가 어떻게 실행될 것이냐에 따라 귀하의 질문에 대한 대답으로 생각하십니까? – paxdiablo

+0

그리고 실제로 VC2008 기능 팩에 대해 이야기하고 있다고 가정합니다. 그 패키지 또는 재배포 가능 패키지를 설치해야합니까? 기능 팩은 VC에 추가 된 것으로, 재배포 가능 항목은 앱 사용자에게 제공됩니다. – paxdiablo

+0

이제 설치 드라이브가 꽉 찼다는 것을 알았습니다. 나는 다른 드라이브에 설치하고 스택 추적을 얻을 것이다. – Ron

답변

0

이 문제의 원인이되는 코드에서 리소스가 누출되었습니다.

리본 모음 컨트롤 (ON_UPDATE_COMMAND_UI)을 업데이트하는 동안 GetDC()를 호출했지만 해제하지 않았습니다. ReleaseDC (..)를 사용하여 릴리스하면 문제가 해결됩니다.

모든 답장을 보내 주셔서 감사합니다.

0

리본이 Vista의 Win32 공용 컨트롤에 포함되어있을 수 있습니다 (따라서 XP에서는 사용할 수 없음). 즉, 정적으로 MFC를 링크했지만, 찾고있는 리소스를 보유하고있는 MFC가 아닐 수도 있습니다.

커뮤니티 위키 만들기.이게 옳은지 전혀 알 수 없기 때문에 :-).

+0

"MFC feature pack"을 설치하여 리본 UI 기능을 가져옵니다. 리본이 MFC dll에 포함된다는 것을 의미한다고 생각합니다. ..? – Ron

+0

충분히 좋지만 @Ash에 대한 의견에서 말했듯이, 설치하지 않았다면 (3 회!), 코드없이 실행하는 방법에 대해 어떻게 생각하십니까? 먼저 MFC FP가 XP에 설치되지 않는 이유는 무엇입니까? – paxdiablo

관련 문제