GetWindowText를 사용하여 창 텍스트를 검색하는 또 다른 예제를 예로 들어 보겠습니다. ANSI 버퍼를 대상 버퍼로 전달하는 GetWindowTextA를 호출합니다. GetWindowTextA는 먼저 GetWindowTextW를 호출하여 유니코드 문자열(wchar_t 배열)을 할당합니다. 그런 다음 유니 코드 물건을 ANSI 문자열로 변환합니다. 다음은 CWnd::GetWindowText에서 GetBufferSetLength를 사용하는 방법에 대한 고전적인 예입니다. 첫 번째 매개 변수는 MessageBox의 부모 창에 대한 포인터이며 매개 변수가 선택 사항이므로 NULL을 간단히 전달할 수 있다는 것을 문서를 읽으면 알 수 있습니다(_In_opt_). 우리는 또한 다음 두 매개 변수는 MessageBox의 텍스트와 제목에 대한 ASCII 문자열임을 알고 있습니다. 마지막 매개 변수는 표시되는 단추와 사용할 아이콘을 제어하는 표시 옵션의 비트 플래그입니다. 설명서에는 선택할 수 있는 상수 목록이 포함되어 있지만 이 예제에서는 MB_OK를 사용하여 “확인” 단추와 MB_ICONINFORMATION를 사용하여 아이콘을 정보 느낌표로 설정합니다. 비트 플래그이기 때문에 이러한 값을 비트별 OR 연산자(|)와 결합하여 단일 값을 얻습니다. 의사 코드에서 이 ANSI에서 유니코드로 변환하고 그 반대로 변환하는 것은 GUI 함수에 국한되지 않고 문자열을 취하고 두 가지 변형을 가지는 Windows API의 전체 집합입니다. 몇 가지 예가 있을 수 있습니다: 계속.

문자 수를 전달하거나 문자 수를 반환하도록 요청하는 일부 함수/메서드를 보았을 것입니다. GetCurrentDirectory와 마찬가지로 바이트 수가 아닌 문자 수를 전달해야 합니다. 예를 들어 C. HWND가 창에 대한 핸들(포인터)이고 LPCTSTR은 const 문자열이고 UINT는 물론 서명되지 않은 정수와 비슷합니다. “LPCTSTR은 어떤 문자열인가요? ASCII 또는 유니코드?” 그리고 대답은 약간 복잡합니다. 일반 Windows C/C++ 프로그래밍에는 LPCTSTR이 유니코드 문자열인지 ASCII 문자열인지를 결정하는 UNICODE라는 전처리기 기호가 있습니다. 이 전처리기 기호는 호출되는 MessageBox 함수를 결정하는 것도 담당합니다(여기에서 자세히 확인할 수 있음). MSDN 페이지에서 자세히 살펴보면 이 함수의 유니코드 및 ASCII 이름이 각각 MessageBoxW 및 MessageBoxA인 것을 확인할 수 있습니다. 함수의 올바른 버전을 스스로 호출해야 하기 때문에 이것은 중요합니다. 이 예제에서는 ASCII 버전(MessageBoxA)1을 호출합니다. 그것은 어떤 의미가 없습니다. SetWindowsText는 관심있는 기능을 말하지 않았기 때문에 WinAPI 함수의 예일 뿐입니다.

필요한 기능으로 교체하십시오. FindResource의 경우 다음 중 작업을 수행 할 수 있습니다 : 많은 경우에 당신은 아래의 예에서 볼 수 있듯이, LPCTSTR리터를 변환하는 TEXT() 매크로를 사용할 수 있습니다 : 지금은 내가 이해 확실하지 않다.

Scroll Up