게임 공부/Windows API
[WinAPI] 윈도우즈 프로그램에서 특정 값 확인하고 싶을 때
woohyeon
2020. 9. 9. 16:19
반응형
윈도우즈 프로그램에서 어떤 변수 또는 결과의 값을 확인하고 싶을 때가 있다. 디버거로 확인할 수 있지만 가끔 디버거로 확인하기 어려운 경우도 있다. 그럴 때 다음과 같이 사용해서 윈도우 메세지로 띄우면 된다.
다음은 숫자 타입의 값을 확인하고 싶을 때 문자열로 변경하여 메세지로 출력하는 방법이다. 문자열 출력을 원할 경우 그냥 바로 MessageBoxA() 함수에 넣으면 된다. MessageBoxA()는 두 번째 인자가 char* 타입이다. 따라서 와이드 타입의 문자열일 경우 MessageBoxW()를 사용하면 된다. 와이드 타입의 경우 std::wstring과 std::to_wstring()을 사용한다.
#include <string>
VOID CheckValue()
{
// 숫자 타입의 값을 문자열로 변경
int x = 10;
std::string integerVal = std::to_string(x);
// 메세지로 출력
MessageBoxA(NULL, integerVal.c_str(), NULL, MB_OK); // 와이드 타입의 문자열은 MessageBoxW 사용
}
다음은 TextOut을 이용하여 x, y 좌표의 위치를 화면에 출력한다.
#include <string>
VOID PrintPosition(WORD x, WORD y)
{
// 숫자 타입의 값을 와이드 타입 문자열로 변경
std::wstring tmpX = std::to_wstring(x);
std::wstring tmpY = std::to_wstring(y);
std::wstring xyPosText = tmpX + L", " + tmpY; // x, y
TextOut(hdc, x, y, xyPosText.c_str(), xyPosText.size());
}