[C++/MFC] ๐Ÿ–ฅ๏ธ MFC ํ”„๋กœ๊ทธ๋ž˜๋ฐ (5)

Singery00ยท2024๋…„ 10์›” 26์ผ

MFC

๋ชฉ๋ก ๋ณด๊ธฐ
5/6
post-thumbnail

๊ฐœ์š”

๐Ÿ–ฅ๏ธ C++ MFC ํ”„๋กœ๊ทธ๋ž˜๋ฐ <ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ํŽธ>

ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ๋ฐ›์•„์„œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

โ— VS 2022 ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ—


๋ณธ๋ก 


ESC ์ข…๋ฃŒ ๋ฐฉ์ง€

ํ˜„์žฌ์˜ ๋‹ค์ด์–ผ๋กœ๊ทธ๋Š” X๋ฅผ ๋ˆŒ๋Ÿฌ ๋‹ซ์ง€ ์•Š๊ณ  ESC ํ‚ค ์ž…๋ ฅ ์‹œ ์ฐฝ์ด ์‚ฌ๋ผ์ง€๋„๋ก ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ‚ค์ž…๋ ฅ์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

PreTranslateMessage ๊ฐ€์ƒํ•จ์ˆ˜

PreTranslateMessage ํ•จ์ˆ˜๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์‹ค์ œ๋กœ ์œˆ๋„์šฐ ํ”„๋กœ์‹œ์ €์—์„œ ์ฒ˜๋ฆฌ๋˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋˜๋Š” ๊ฐ€์ƒ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
์šฐ์„  ํด๋ž˜์Šค ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์ผœ์ฃผ์„ธ์š”.

ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์•„๋ž˜์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ‚ค๋ณด๋“œ ๋ฐ ๋งˆ์šฐ์Šค ์ž…๋ ฅ ์ฒ˜๋ฆฌ
  • ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค๋‚˜ ๋งˆ์šฐ์Šค ํด๋ฆญ ๋“ฑ์˜ ์ž…๋ ฅ์„ ํŠน๋ณ„ํžˆ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ PreTranslateMessage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋ฉ”์‹œ์ง€ ํ•„ํ„ฐ๋ง
  • ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์ปค์Šคํ…€ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ
  • ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ์ „์— ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ž˜์Šค ๋งˆ๋ฒ•์‚ฌ๋กœ ์ถ”๊ฐ€

๊ทธ๋ฆฌ๊ณ  ๋‹ค์ด์–ผ๋กœ๊ทธ ํด๋ž˜์Šค๋ฅผ ์„ ํƒํ•ด์ฃผ๊ณ ,
๊ฐ€์ƒ ํ•จ์ˆ˜ ํƒญ์—์„œ PreTranslateMessage๋ฅผ ๋”๋ธ”ํด๋ฆญํ•ด์„œ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์ƒ๊ธธ๊ฒ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์— ํ‚ค์ž…๋ ฅ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋„ฃ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ž‘์„ฑ

MSG* pMsg ์ธ์ž๋Š” ๋ฉ”์‹œ์ง€์˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” MSG ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค.

message ๊ฐ€ ํ‚ค ๋‹ค์šด์ผ ๋•Œ,
wParam ์ด ESC ์ž…๋ ฅ์ผ ๋•Œ return ํ•ด์ฃผ๋„๋ก ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

BOOL TestDialog::PreTranslateMessage(MSG* pMsg)
{
	
	if (pMsg->message == WM_KEYDOWN)
	{
		if (pMsg->wParam == VK_ESCAPE)
		{
			return TRUE;
		}
	}

	return CDialogEx::PreTranslateMessage(pMsg);
}

์ด์ œ ๋” ์ด์ƒ ESC๋ฅผ ์ž…๋ ฅํ•ด๋„ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


GetKeyState

๊ผญ PreTranslateMessage์—์„œ ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  GetKeyStateํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„ํŠผ ์ž…๋ ฅ ์‹œ ๋ฉ”์„ธ์ง€ ๋ฐ•์Šค

์ž„์‹œ๋กœ ๋งŒ๋“  ๋ฒ„ํŠผ ์ž…๋ ฅ ์ด๋ฒคํŠธ์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ปจํŠธ๋กค ์ž…๋ ฅ ์œ ๋ฌด์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ฌธ๊ตฌ์˜ ๋ฉ”์„ธ์ง€๋ฐ•์Šค๋ฅผ ๋„์šฐ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ

์‹คํ–‰ํ•ด๋ณด๋ฉด ์ œ๊ฐ€ ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ฌธ๊ตฌ์˜ ๋ฉ”์„ธ์ง€๋ฐ•์Šค๊ฐ€ ๋„์›Œ์ง‘๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

ํ‚ค์ž…๋ ฅ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„ ๋ดค์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ์—๋Š” ํ…์ŠคํŠธ ์ปจํŠธ๋กค์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

0๊ฐœ์˜ ๋Œ“๊ธ€