2012-09-28 5 views

답변

3

귀하의 의견에서 한스의 답변까지 귀하는 메시지를 보내고 있습니다. 이 메시지는 일반적으로 SendMessageTimeout과 함께 전송됩니다. 이제 SendMessageTimeout에는 SendMessageTimeoutWSendMessageTimeoutA의 두 가지 버전이 있습니다. SendMessageTimeoutW을 호출하면 유니 코드 텍스트를 제공해야하며 SendMessageTimeoutA으로 전화하면 ANSI 텍스트를 제공합니다.

따라서 두 가지 메시지 식별자를 사용하여 데이터 형식을 구분하지 않고 데이터를 보내는 데 사용되는 기능을 기반으로합니다. 그래서 SendMessageW/SendMessageA, PostMessageW/PostMessageA 및 사용시

정확히 동일하게 적용된다.

SendMessageTimeoutW을 호출하면 HWND_BROADCAST을 사용하면 ANSI 및 유니 코드 창에 메시지가 수신 될 것으로 예상 할 수 있습니다. 메시징 시스템은 보낸 데이터가 메시지를 수신하는 창에 적합한 인코딩으로 변환되도록합니다.

+0

감사합니다. SendMessageTimeout에서 A/W를 확인 했어야합니다. D' oh! :) – Mordachai

3

WM_DEVMODECHANGE은 숫자이며 하나만 있습니다. 너비가 좁거나 넓은 문자열을 가져올 지 여부는 창이 유니 코드인지 여부에 따라 결정됩니다. CreateWindowExA 또는 CreateWindowExW()를 사용하여 작성한 방법에 따라 결정됩니다. 그리고 나중에 IsWindowUnicode()로 찾을 수 있습니다.

+0

이 경우이 메시지를 보내드립니다. 그래서 내 창에 등록 된 형식으로 문자열을 보낼거야 ... – Mordachai

+0

음, 기다려. 직접 생성 할 때는 일반적으로 브로드 캐스트하고 SendMessageTimeout()을 사용합니다. –

관련 문제