C++프로그래밍/MFC

팝업메뉴

season97 2025. 3. 10. 10:22

# 팝업 메뉴 

ㆍ 팝업 메뉴를 만들때는 가급적 메뉴를 새로 만들어서 빼주자

ㆍ 속성에서 메시지를 등록해준다.

 

# tip - 메뉴 새로 만들어서 뺴주는 법

ㆍ 리소스 뷰에서 메뉴 탭을 새로 만들어줄 수 있다. 그리고 ID값을 바꿔주도록 하자 

Resource.h에 등록된다

 

#이런식으로 구성해 주었다

ㆍ 메뉴를 불러오는 방법은 아래 코드와 같다.

ㆍ 식벽자를 인식하지 못하는 이유는 내가 POPUP 메뉴를 새로 뺴주었는데 이런것들은 Resource.h에 있다. (이거include해주면 오류는 사라짐)

 

ㆍ 인식만 못할뿐 빌드는 잘 된다. 신경쓰이면 resource.h를 include해주자

ㆍ Resource.h에 들어가서 확인해니 자동으로 생성된 MENU1에서 내가 ID값을 속성에서 바꿔줬기때문에 똑같은 값 매크로가 2개나 등록되어있다..!

 

ㆍ 나중에 문제가 생길 여지가 많으니 반드시 지워주자

 

ㆍ 서브메뉴를 포인터로 받아와서 사용한다

 

ㆍ Flag에 들어가있는 메크로는 왼쪽 마우스버튼을 이용해 선택할거고,텍스트는 왼쪽 정렬을 사용한다는 뜻이다.

 

ㆍ Wnd는 현재 view클레스에서 작업중이므로 그대로 this를 넣어준다 

 

ㆍ bitflag방식으로 구현되어있다 따라서 비트연산자 or인 |를 사용해줫다.

 

 

#좌표계에 대한 이슈

 

ㆍ 매개변수의 point는 클라이언트 기준이다(view윈도우 기준을 클라이언트 영역이라고 부른다)

(모니터의 화면을 Screen 영역이라고 부른다)

 

ㆍ 근데 이 TrackPopupMenu의 매개변수는 Screen좌표를 요구한다.

ㆍ C++을 안다면 어려울거 없는 코드다. 클라이언트(View) 좌료를 모니터 화면인 Screen좌표로 바꿔주고 지정해줫다.

 

ㆍ 그 아래 EnableMenuItem은 메뉴를 비활성화 시켜주는것 (마소에서 사용하는거 공유해놓으니 필요한 기능이 있을때마다 찾아주는 식으로 하자