1. μκ°
컀μ(Cursor)λ μ»΄ν¨ν° νλ©΄μμ νμ¬ μ λ ₯ λλ μΆλ ₯ μμΉλ₯Ό λνλ΄λ μμ νμμ λλ€. μνλ μ’νλ‘ μ»€μλ₯Ό μ΄λνλ κ²μ ν μ€νΈ κΈ°λ° μΈν°νμ΄μ€μμ λ§€μ° μ€μν κΈ°λ₯μ λλ€. μ΄λ¬ν 컀μ μ΄λμ κ°λ₯νκ² ν΄μ£Όλ ν¨μ μ€ νλκ° SetConsoleCursorPosition μ λλ€.
μ΄ κΈμμλ SetConsoleCursorPosition ν¨μλ₯Ό μ¬μ©νμ¬ μνλ μ’νλ‘ μ»€μλ₯Ό μ΄λνλ λ°©λ²μ λν΄ μ€λͺ νκ² μ΅λλ€. SetConsoleCursorPosition ν¨μλ Windows μ΄μ 체μ μμ μ 곡λλ ν¨μλ‘, C++ λ±μ νλ‘κ·Έλλ° μΈμ΄λ₯Ό μ¬μ©νμ¬ μ»€μλ₯Ό μ‘°μν μ μλλ‘ λμμ€λλ€. κ³μν΄μ SetConsoleCursorPosition ν¨μμ κ°μμ μ¬μ©λ², κ·Έλ¦¬κ³ μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€. 컀μ μ΄λμ ν΅ν΄ ν¨μ¨μ μΈ ν μ€νΈ κΈ°λ° μΈν°νμ΄μ€λ₯Ό ꡬννλ λ° λμμ΄ λκΈ°λ₯Ό λ°λλλ€.
2. 컀μ μ΄λμ μ€μμ±
컀μ μ΄λμ ν μ€νΈ κΈ°λ° μΈν°νμ΄μ€μμ λ§€μ° μ€μν κΈ°λ₯μ λλ€. νΉν ν μ€νΈ κΈ°λ° κ²μ, ν μ€νΈ νΈμ§κΈ°, μ½μ μ ν리μΌμ΄μ λ±μμ μ¬μ©μμμ μνΈμμ©μ μν΄ νμμ μΌλ‘ μ¬μ©λ©λλ€.
컀μ μ΄λμ ν΅ν΄ μ¬μ©μλ μνλ μμΉμ ν μ€νΈλ₯Ό μ λ ₯νκ±°λ νμΈν μ μκ³ , νλ‘κ·Έλ¨μμλ νμν μ 보λ₯Ό νΉμ μμΉμ μΆλ ₯ν μ μμ΅λλ€. 컀μ μ΄λμ νΈμ§ κΈ°λ₯μ ꡬννκΈ° μν΄μλ μ€μν©λλ€. μλ₯Ό λ€μ΄, ν μ€νΈλ₯Ό νΉμ μμΉλ‘ 볡μ¬νκ³ μ ν λλ μλ³Έ μμΉμμ μμ ν λ€, 볡μ¬ν μμΉλ‘ 컀μλ₯Ό μ΄λμμΌμΌ ν©λλ€.
λν, ν μ€νΈ κΈ°λ° μ¬μ©μ μΈν°νμ΄μ€μμλ κ°λ μ±κ³Ό μ¬μ©μ κ²½νμ ν₯μνκΈ° μν΄ ν μ€νΈλ₯Ό μ§μ λ μμΉμ λ°°μΉνλ κ²μ΄ νμν©λλ€. μ΄λ₯Όμν΄ μ»€μ μ΄λμ νμμ μΈ λꡬμ λλ€.
λ°λΌμ, 컀μ μ΄λμ ν μ€νΈ κΈ°λ° μΈν°νμ΄μ€μμ ν¨μ¨μ μΈ μμ μ μννλ λ° λ§€μ° μ€μν©λλ€. SetConsoleCursorPosition ν¨μλ₯Ό μ¬μ©νμ¬ μ»€μλ₯Ό μνλ μμΉλ‘ μ΄λμν€λ λ°©λ²μ μμλ³΄κ² μ΅λλ€.
3. SetConsoleCursorPosition ν¨μ κ°μ
SetConsoleCursorPositionλ Windows μ΄μ 체μ μμ μ 곡λλ ν¨μλ‘, 컀μλ₯Ό μνλ μμΉλ‘ μ΄λμν¬ μ μμ΅λλ€. μ΄ ν¨μλ "windows.h" ν€λ νμΌ μμ μ μλμ΄ μκ³ , Windows APIλ₯Ό ν΅ν΄ νΈμΆλ©λλ€.
ν¨μμ μνμ λ€μκ³Ό κ°μ΅λλ€:
BOOL SetConsoleCursorPosition(
HANDLE hConsoleOutput,
COORD dwCursorPosition
);
- hConsoleOutput: 컀μλ₯Ό μ΄λμν¬ μ½μ μ°½μ νΈλ€μ λλ€.
- dwCursorPosition: μ΄λν 컀μμ μ’νλ₯Ό μ§μ νλ COORD ꡬ쑰체μ λλ€.
SetConsoleCursorPosition ν¨μλ 컀μλ₯Ό μ§μ λ νΈλ€μ μ½μ μ°½μΌλ‘ μ΄λμν΅λλ€. μ΄λ, μ’νλ COORD ꡬ쑰체λ₯Ό μ¬μ©νμ¬ xμ y κ°μΌλ‘ λνλ λλ€. λ°λΌμ, 컀μλ₯Ό μ΄λμν¬ μμΉμ xμ y μ’νλ₯Ό COORD ꡬ쑰체μ μ€μ ν λ€μ, μ΄λ₯Ό ν¨μμ λ λ²μ§Έ μΈμλ‘ μ λ¬ν©λλ€.
ν¨μλ 컀μ μ΄λμ μ±κ³΅νλ©΄ TRUEλ₯Ό λ°ννκ³ , μ€ν¨νλ©΄ FALSEλ₯Ό λ°νν©λλ€. 컀μ μ΄λμ μ€ν¨νλ κ²½μ°λ μλ₯Ό λ€μ΄ μλͺ»λ νΈλ€μ΄ μ λ¬λμμ λ λ±μ΄ μμ μ μμ΅λλ€.
SetConsoleCursorPosition ν¨μλ₯Ό μ¬μ©νμ¬ μ»€μλ₯Ό μνλ μμΉλ‘ μ΄λνλ λ°©λ²μ λν΄ λ€μ μΉμ μμ μμΈν μμλ³΄κ² μ΅λλ€.
4. SetConsoleCursorPosition ν¨μμ μ¬μ©λ²
SetConsoleCursorPosition ν¨μλ₯Ό μ¬μ©νμ¬ μ»€μλ₯Ό μνλ μμΉλ‘ μ΄λμν€λ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
- λ¨Όμ , 컀μλ₯Ό μ΄λμν¬ μ½μ μ°½μ νΈλ€μ μ»μ΄μΌ ν©λλ€. μ΄λ₯Ό μν΄ CreateFile ν¨μλ₯Ό μ¬μ©νμ¬ μ½μ μ°½μ νΈλ€μ κ°μ Έμ¬ μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€:
HANDLE hConsoleOutput = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
- μ΄μ 컀μλ₯Ό μ΄λν μμΉμ μ’νλ₯Ό μ€μ ν΄μΌ ν©λλ€. μ’νλ COORD ꡬ쑰체λ₯Ό μ¬μ©νμ¬ xμ y κ°μΌλ‘ λνλ λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΄ μ’νλ₯Ό μ€μ ν μ μμ΅λλ€:
COORD dwCursorPosition;
dwCursorPosition.X = 10; // x μ’ν
dwCursorPosition.Y = 5; // y μ’ν
- λ§μ§λ§μΌλ‘, SetConsoleCursorPosition ν¨μλ₯Ό νΈμΆνμ¬ μ»€μλ₯Ό μνλ μμΉλ‘ μ΄λμν΅λλ€. νΈλ€κ³Ό μ’νλ₯Ό μΈμλ‘ μ λ¬ν©λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€:
BOOL success = SetConsoleCursorPosition(hConsoleOutput, dwCursorPosition);
- ν¨μκ° μ±κ³΅μ μΌλ‘ νΈμΆλμλμ§ νμΈνκΈ° μν΄ λ°ν κ°μ νμΈν©λλ€. λ°ν κ°μ΄ TRUEμΈ κ²½μ° μ»€μ μ΄λμ μ±κ³΅ν κ²μ λλ€.
컀μμ μμΉλ₯Ό μ΄λμν€λ©΄ ν μ€νΈλ₯Ό μ§μ λ μμΉμ μ λ ₯νκ±°λ νμΈν μ μμ΅λλ€. λν, μ΄λλ 컀μ μμΉμμ ν μ€νΈλ₯Ό 볡μ¬νκ±°λ μμ νλ λ±μ μμ μ μνν μλ μμ΅λλ€.
μ΄μ²λΌ SetConsoleCursorPosition ν¨μλ₯Ό μ¬μ©νλ©΄ ν μ€νΈ κΈ°λ° μΈν°νμ΄μ€μμ ν¨μ¨μ μΈ μ»€μ μ΄λμ ꡬνν μ μμ΅λλ€.
5. SetConsoleCursorPosition ν¨μμ μμ
λ€μμ SetConsoleCursorPosition ν¨μμ μμ μ½λμ λλ€. μ΄ μμλ 컀μλ₯Ό μ΄λμμΌ μνλ μμΉμ ν μ€νΈλ₯Ό μΆλ ₯νλ κΈ°λ₯μ ꡬννλ λ°©λ²μ 보μ¬μ€λλ€:
#include <iostream>
#include <Windows.h>
int main() {
// 컀μλ₯Ό μ΄λν μ½μ μ°½μ νΈλ€μ μ»μ΄μ΅λλ€
HANDLE hConsoleOutput = CreateFile("CONOUT$", GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
if (hConsoleOutput == INVALID_HANDLE_VALUE) {
std::cout << "Failed to get console handle." << std::endl;
return 1;
}
// 컀μλ₯Ό μ΄λν μμΉ μ’νλ₯Ό μ€μ ν©λλ€
COORD dwCursorPosition;
dwCursorPosition.X = 10; // x μ’ν
dwCursorPosition.Y = 5; // y μ’ν
// 컀μλ₯Ό μνλ μμΉλ‘ μ΄λμν΅λλ€
BOOL success = SetConsoleCursorPosition(hConsoleOutput, dwCursorPosition);
if (!success) {
std::cout << "Failed to set console cursor position." << std::endl;
CloseHandle(hConsoleOutput);
return 1;
}
// μ΄λλ 컀μ μμΉμμ ν
μ€νΈλ₯Ό μΆλ ₯ν©λλ€
std::cout << "Hello, World!" << std::endl;
// νΈλ€μ λ«κ³ νλ‘κ·Έλ¨μ μ’
λ£ν©λλ€
CloseHandle(hConsoleOutput);
return 0;
}
μμ μ½λμμλ λ¨Όμ CreateFile ν¨μλ₯Ό μ¬μ©νμ¬ μ½μ μ°½μ νΈλ€μ μ»μ΄μ€κ³ , μ΄ νΈλ€μ μ΄μ©νμ¬ SetConsoleCursorPosition ν¨μλ₯Ό νΈμΆνμ¬ μ»€μλ₯Ό μνλ μμΉλ‘ μ΄λμν΅λλ€. μ΄νμλ μ΄λλ 컀μ μμΉμμ ν μ€νΈ "Hello, World!"λ₯Ό μΆλ ₯ν©λλ€.
μ½λλ₯Ό μ€ννλ©΄ 컀μκ° μ§μ λ μμΉλ‘ μ΄λνμ¬ "Hello, World!"κ° ν΄λΉ μμΉμ μΆλ ₯λλ κ²μ νμΈν μ μμ΅λλ€. μ΄μ κ°μ΄ SetConsoleCursorPosition ν¨μλ₯Ό μ¬μ©νλ©΄ ν μ€νΈ κΈ°λ° μΈν°νμ΄μ€μμ μνλ μμΉμ ν μ€νΈλ₯Ό μΆλ ₯νλ λ±μ λ€μν μμ μ μνν μ μμ΅λλ€.
λκΈ