[그림 1] NewMenu의 실행 모습(출처: podetti.com)
응용프로그램의 frame window, toolbar, statusbar, menu, dialog 등을 예쁘게 꾸미려면 Bruno Podetti가 만든 NewMenu를 사용하면 된다.
1. CMainFrm 클래스(class)의 부모 클래스를 CFrameWnd -> CNewFrameWnd으로 바꾼다.
class CMainFrame : public CNewFrameWnd{...}
2. CMainFrm 클래스의 컨트롤용 멤버 변수(member variable for controls)를 CStatusBar -> CNewStatusBar, CToolBar -> CNewToolBar로 바꾼다.
protected: // 컨트롤 모음이 포함된 멤버입니다.CNewStatusBar m_wndStatusBar;CNewToolBar m_wndToolBar;
3. CMainFrm 클래스의 소스 파일(source file)인 "MainFrm.cpp"로 가서 바꾸기 기능을 이용해 CFrameWnd -> CNewFrameWnd으로 바꾼다.
4. OnCreate 함수에 아래 code를 추가한다.
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){...m_DefaultNewMenu.LoadToolBar(IDR_MAINFRAME);// TODO: 도구 모음을 도킹할 수 없게 하려면 이 세 줄을 삭제하십시오.m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);return 0;}
5. 응용프로그램의 InitInstance 함수로 가서 아래 code를 추가한다.
BOOL CAntPhaseApp::InitInstance(){...AddDocTemplate(pDocTemplate);
// Set the drawing style of all menus to XP-Mode or STYLE_ORIGINALCNewMenu::SetMenuDrawMode(CNewMenu::STYLE_XP_2003);CNewMenu::SetGloomFactor(0);
// 표준 셸 명령, DDE, 파일 열기에 대한 명령줄을 구문 분석합니다.CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);
...}
SetMenuDrawMode 함수는 NewMenu를 다양한 색깔로 그릴 수 있도록 옵션을 선택한다. SetGloomFactor 함수는 toolbar의 비트맵(bitmap)의 흐린 정도를 설정한다.
6. toolbar의 색깔을 하이컬러(high color)로 만들려면 더 복잡한 과정을 거쳐야 한다.
1) 먼저 "리소스 뷰"를 이용해서 Bitmap으로 toolbar용 비트맵을 읽어들인다. 예를 들어 이 비트맵의 리소스(resource) 이름을 "IDR_TOOLBAR256"이라 한다.
2) "MainFrm.cpp" 파일 상단에 아래의 정적 변수(static variable)를 추가한다.
static WORD ToolId[] = { IDR_TOOLBAR256,16, 15,ID_FILE_NEW,ID_FILE_OPEN,ID_FILE_SAVE,ID_EDIT_CUT,ID_EDIT_COPY,ID_EDIT_PASTE,ID_FILE_PRINT,ID_APP_ABOUT,NULL};
3) "MainFrm.cpp" 파일에 있는 OnCreate 함수에 아래 code를 추가한다.
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CNewFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){TRACE0("도구 모음을 만들지 못했습니다.\n");return -1; // 만들지 못했습니다.}m_wndToolBar.SetWindowText(_T("기본동작 도구모음"));m_wndToolBar.LoadHiColor(MAKEINTRESOURCE(IDR_TOOLBAR256));
if (!m_wndStatusBar.Create(this) ||!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT))){TRACE0("상태 표시줄을 만들지 못했습니다.\n");return -1; // 만들지 못했습니다.}
m_DefaultNewMenu.LoadToolBar(ToolId, RGB(192, 192, 192));
// TODO: 도구 모음을 도킹할 수 없게 하려면 이 세 줄을 삭제하십시오.m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);
return 0;}
댓글 없음 :
댓글 쓰기
욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.