오늘 인수가 없는데도 GetWindowLong
(및 GetWindowLongPtr
)에 'ANSI'(A) 및 '유니 코드'(W)가 있음을 알게되었습니다. MSDN page on GetWindowLong
은 이러한 변형이 존재 함을 나타내지 만 그 이유는 언급하지 않습니다.GetWindowLong에 ANSI 및 유니 코드 변형이있는 이유는 무엇입니까?
CreateWindowEx
(A/W 맛이 있음) 또는 RegisterClass
의 인코딩과 일치해야한다고 생각할 수 있습니다. 그러나 여러 가지 이유로 이것이 의미가 있다고 생각하지 않습니다. 외관상으로는, someone reported that the Unicode version may fail on XP (비록 XP가 NT이고, 내가 이해할 수 있듯이 모든 유니 코드가 후드 임에도 불구하고). 나는 또한 (모두 GetWindowLong
의 맛을 포함하고 있음)의 32 비트 버전을 해체하려고 시도했으며 일부 명백한 인코딩 차이 *에 따라 추가 작업이 이루어졌습니다.
내가 선택한 기능은 무엇입니까?
*이 GetWindowLong
의 맛은 다른 함수로 전달 주위 부울 제외한 동일하다. 이 부울은 메모리 구조의 플래그 비트와 비교됩니다. 정적 코드 분석을 사용하여 추적 할 수는 없습니다.
바보 같은 질문 - 왜 2012 년에 ANSI 버전에 신경을 썼겠습니까? –
중요한 두 가지 시나리오를 상상할 수 있습니다. 하나는 제 3자가 제공 한 창 클래스를 사용하는 곳이며, ANSI 클래스로 등록합니다. 뒤에서 발생하는 'A <-> W'변환은 성능상의 불이익을 초래할 수 있습니다. 다른 하나는 ANSI를 사용하는 곳입니다. 왜냐하면 단순히 i18n에 관심이 없기 때문입니다 (예 : 게임을 작성 중이며 어쨌든 창이 전체 화면을 차지하고 있음). –
필자는 .. 어쨌든 함수는 내부적으로 (ANSI 응용 프로그램의 경우) 변환을 수행합니다. 또한 UI 코드의 문자열 변환 성능은 거의 문제가되지 않습니다. –