본예제는 MFC에서 다이얼로그에 추가한 메뉴의 앞에 아이콘을 넣는 방법을 다루는 예제를 번역하여 작성한 글이다.
1. 사용한 라이브러리 출처:
http://www.codeproject.com/Articles/2869/Owner-drawn-menu-with-bitmaps-icons-and-colors
2. 메뉴에 사용할 아이콘 이미지 준비
인터넷에서 32x32 아이콘 이미지를 다운로드 받아서 bmp로 변환 후, 소스 코드가 있는 폴더로 복사해두었다.
https://www.iconfinder.com/iconsets/yooicons_set09_halloween
3. 리소스 추가
Resource View창에서 마우스 오른쪽 버튼을 클릭하고 나오는 메뉴에서 "Add Resource"를 선택한다. 그리고 나서 위에 있는 파일 네 개를 선택해준다.
4. testDLG.h에 추가
codeproject에서 다운로드 받은 파일인 MenuCH.h와 MenuCH.cpp 파일을 프로젝트에 추가해준다. 그리고 프로젝트 파일이름이 menu_test인 경우에 menu_testDlg.h에 아래 헤더파일을 추가했다.
#include "MenuCH.h"
그리고 protected멤버로써 아래 변수들을 추가한다.
CMenuCH m_FileMenu, m_EditMenu, m_ViewMenu, m_HelpMenu;
5. menu_testDlg.cpp 에 추가
Menu_testDlg.cpp 파일에 아래 한줄을 추가한다.
#include "MenuCH.h"
그리고 Cmenu_testDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 함수에 아래 내용을 추가하면
다이얼로그 타이틀바 밑에 메뉴바가 생긴다.
Cmenu_testDlg::Cmenu_testDlg(CWnd* pParent /*=NULL*/) 함수에 아래 내용을 추가하면 메뉴바에 하위메뉴 들이 추가된다.
6. MenuCH.cpp 파일을 수정
void CMenuCH::DrawXPMenu(LPDRAWITEMSTRUCT lpDIS)에서 다음 세 군데를 수정한다.
메뉴스타일이 MIT_XP인 경우 32x32사이즈 이미지를 사용할 경우로 수정하였다. 다른 경우는 해당 함수를 같은 방식으로 고치면 될 것으로 보임.
7. 실행결과
실행결과는 다음과 가탇.
도움이 되었길 바란다.
최근댓글