ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] 콘솔창 키입력 메뉴이동 ConsoleHandle
    공부/C++ 2023. 7. 19. 17:06

    - 코드

    #include <iostream>
    #include <conio.h>
    #include <Windows.h>
    //#include "KeyClass.h"
    
    enum KeyList
    {
    	UP = 72,
    	LEFT = 75,
    	RIGHT = 77,
    	DOWN = 80,
    };
    
    
    #define MENU_LENGTH 5
    
    using namespace std;
    
    void Init();
    void SetConsoleCursorPosition(int x, int y);
    void InputKey();
    COORD GetConsoleCursorPosition();
    void PrintMainPage();
    void MoveMenuCursorUP();
    void MoveMenuCursorDOWN();
    
    int main()
    {
    	Init();
    	while (true)
    	{
    		InputKey();
    	}
    	return 0;
    }
    
    void Init()
    {
    	_wsetlocale(LC_ALL, L"korean");
    	system("mode con cols=64 lines=24 | title test");
    	PrintMainPage();
    	SetConsoleCursorPosition(27, 2);
    }
    
    void SetConsoleCursorPosition(int x, int y)
    {
    	HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    	COORD pos;
    	pos.X = x;
    	pos.Y = y;
    	SetConsoleCursorPosition(consoleHandle, pos);
    }
    
    COORD GetConsoleCursorPosition()
    {
    	CONSOLE_SCREEN_BUFFER_INFO cs;
    	GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cs);
    	return cs.dwCursorPosition;
    }
    
    void PrintMainPage()
    {
    	wcout << L"메인화면" << endl;
    
    	SetConsoleCursorPosition(26, 2);
    	wcout << L"> 테스트" << 1 << endl;
    	for (int i = 1; i < MENU_LENGTH; ++i) {
    		SetConsoleCursorPosition(28, i + 2);
    		wcout << L"테스트" << i+1 << endl;
    	}
    }
    
    void MoveMenuCursorUP()
    {
    	COORD pos = GetConsoleCursorPosition();
    
    	if (pos.Y <= 2) {
    	}
    	else{
    		SetConsoleCursorPosition(26, pos.Y);
    		cout << " ";
    		SetConsoleCursorPosition(26, pos.Y - 1);
    		cout << ">";
    	}
    }
    
    void MoveMenuCursorDOWN()
    {
    	COORD pos = GetConsoleCursorPosition();
    
    	if (pos.Y >= 1+MENU_LENGTH) {
    	}
    	else {
    		SetConsoleCursorPosition(26, pos.Y);
    		cout << " ";
    		SetConsoleCursorPosition(26, pos.Y + 1);
    		cout << ">";
    	}
    }
    
    void InputKey()
    {
    	int key = 0;
    	if (_kbhit() > 0)
    	{
    		key = _getch();
    
    		// 방향키 입력
    		if(key == 224)
    		{
    			//up:72, left:75, right:77, down:80 
    			key = _getch();
    			switch (key)
    			{
    			case KeyList::UP:
    				MoveMenuCursorUP();
    				break;
    			case KeyList::LEFT:
    				break;
    			case KeyList::RIGHT:
    				break;
    			case KeyList::DOWN:
    				MoveMenuCursorDOWN();
    				break;
    			default:
    				break;
    			}
    			
    		}
    	}
    }

    '공부 > C++' 카테고리의 다른 글

    temp  (0) 2023.10.25
    __restrict  (0) 2023.07.14
    [C++] 클래스 생성  (0) 2022.07.13
Designed by Tistory.