2010-12-01 3 views
0

CE5.0 시스템에서 DirectDraw를 작동시키는 것과 관련하여 잠시 동안 문제가 발생했습니다. 마침내 Windows Moblie에서 작동하도록하는 코드를 발견했습니다. 일부 코드를 제대로 컴파일하면 코드가 올바르게 컴파일됩니다.WinCE5.0에서 PInvoke DirectDraw를 사용하려고 할 때 'The parameter is incorrect'입니다.

DDCAPS halCaps = new DDCAPS(), helCaps = new DDCAPS(); 
halCaps.dwSize = (uint)Marshal.SizeOf(typeof(DDCAPS)); 
helCaps.dwSize = halCaps.dwSize; 
result = dDraw.GetCaps(out halCaps, out helCaps); 

내가 얻을의 예외 '매개 변수가 잘못되었습니다'

그것은 성공적으로 그것을 통해 시스템의 기능을 확인에 도달하지만 때, 창문의 형태로 핸들 인스턴스를 만드는 과정 운영 . 나중에이 기능을 사용하면이 예외가 발생합니다.이 코드를 주석으로 처리하면 내 PInvoke에 문제가 있다는 것을 알 수 있습니다.하지만 CE5.0 DirectDraw에 대한 정보를 어디에서 검색해야하는지 알지 못합니다. 매우 제한적인 것 같습니다. 오류는 지금까지 가장 좋은 결과를 다음 봤는데

[Guid("9c59509a-39bd-11d1-8c4a-00c04fd930c5"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 

기사처럼 뭔가 리드하는 인터페이스에서 오는 것 같다 그러나 나는 현재

[DllImport("ddraw.dll", CallingConvention = CallingConvention.Winapi)] 

내 기능을 수입하고 (그리고 시도한 기준으로 코드를 사용하고있는 코드)은 here입니다. 내 코드는 다르게 사용되었지만 꾸준히 코드에서 문제가 발생했는지를 점차적으로 확인했습니다. 따라서이 시점에서 실제로는 동일합니다.

문제의 원인에 대한 도움, 내가 CE5.0을 통해 DirectDraw에서 정보를 찾아야하는 곳, 또는 내가 끔찍하게 잘못하고있는 부분에 대한 조언은 크게 감사하겠습니다.

추가 정보 : DirectDraw가 지원되고 2 차원 하드웨어 가속을 사용할 수 있다는 정보가 있지만 D3D가 옵션이 아닌 사용자 지정 프레임 워크입니다. 이슈.

답변

0

비슷한 문제가있는 사람들을 위해 여기에 넣으십시오. 잠시 동안 C++ 코드를 살펴 본 후에 CE5.0이 6.0+와 다른 변수와 함수를 사용하는 것처럼 보이므로 IDirectDraw4보다는 같은 IDirectDraw4와 IDirectDrawSurface5를 사용해야합니다. IDirectDrawSurface5는 IDirectDrawSurface4에서 변환해야합니다.

이 정보가 유사한 문제가있는 다른 사용자에게 유용하기를 바랍니다. 이 코드를 사용하여 모든 문제를 해결하지는 않았지만 시작하는 것이 좋습니다.

관련 문제