2011-03-18 2 views
0

기존 Winform 컨트롤에서 파생 된 사용자 지정 Windows 폼 컨트롤을 만들고 싶습니다. 예 : TextBoxEx는 System.Windows.Forms.TextBox에서 파생됩니다. 이러한 새로운 사용자 정의 컨트롤은 모양과 느낌을 변경하고 기존 컨트롤에 몇 가지 추가 기능을 추가합니다. 이는 적절한 win32 API 호출을 통해 수행됩니다.32 비트 (x86) 및 64 비트 (x64) 플랫폼 모두에서 실행될 수있는 사용자 지정 Windows 폼 컨트롤

개발 된 사용자 지정 컨트롤이 32 비트 및 64 비트 플랫폼 모두에서 작동하는지 확인하고 싶습니다. 나는 당신의 경험에 근거하여 그것을 성취하는 가장 좋은 방법을 알고 싶다.

답변

1

특별한 조치를 취할 필요가 없습니다. 기본 Windows API는 32 비트인지 64 비트인지에 관계없이 동일합니다.

포인터 크기의 항목을 보유하는 데이터 유형입니다 (예 : 창 핸들은 대상 플랫폼에 따라 32 비트에서 64 비트 사이의 부동 소수점 수를 제공합니다. 이러한 이유로 그들은 P/Invoke에 대해 IntPtr으로 선언됩니다. 그렇게하면 코드가 두 플랫폼 모두에서 작동합니다.

+0

나는 그것이 올바른 dll에 바인딩됩니다 것을 이해합니다. 예 : user32.dll을 사용하고 있다면 32 비트 플랫폼에서 32 비트 버전에 바인딩되고 64 비트 플랫폼에서 실행되는 경우 64 비트 버전에 바인딩됩니다. 그러나 user32.dll에는 SetWindowLong32 및 SetWindowLongPtr64와 같은 win32 API가 있습니다. 지원되는 플랫폼에 따라이 두 API의 코드에서 선택해야합니다. 제발 조언. –

+0

아니요, 해당 API는 32 및 64 모두에서 SetWindowLongPtr이라고합니다. API 간에는 실질적으로 차이점이 없습니다. –

+0

처음에는 같은 인상을주었습니다 만 다음을 참조하십시오. http://stackoverflow.com/questions/3343724/how-do-i-pinvoke-to-getwindowlongptr-and-setwindowlongptr-on-32-bit-platforms –

관련 문제