본예제는 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. 실행결과

      실행결과는 다음과 가탇.

     

    도움이 되었길 바란다.

     

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기