원본 : http://www.debuglab.com/knowledge/toolbardrop.html
1.요약
툴바 버튼에 DropDown버튼을 넣는 방법
2.본문
DropDown버튼을 눌렀을 때 메뉴가 나타나게하는것을 예로 들어 설명.
1) 툴바를 생성한다. (Create())
2) 버튼 옆에 화살표 버튼을 생성시키기 위해 다음과 같이 스타일을 지정해 준다.
- 2001.08.13 Smile Seo -
1.요약
툴바 버튼에 DropDown버튼을 넣는 방법
2.본문
DropDown버튼을 눌렀을 때 메뉴가 나타나게하는것을 예로 들어 설명.
1) 툴바를 생성한다. (Create())
2) 버튼 옆에 화살표 버튼을 생성시키기 위해 다음과 같이 스타일을 지정해 준다.
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(
TBSTYLE_EX_DRAWDDARROWS);
3) 버튼이 생성 되길 원하는 버튼의 스타일도 다음과 같이 수정해 준다. DWORD dwStyle = m_wndToolBar.GetButtonStyle(
m_wndToolBar.CommandToIndex(ID_DROPDOWN));
dwStyle |= TBSTYLE_DROPDOWN;
m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex
(ID_DROPDOWN), dwStyle);
4) Arrow버튼을 눌렀을 경우에 대한 메세지 처리를 위해 Mainfr.h에 다음과 같이 선언하고 afx_msg void OnToolbarDropDown(NMTOOLBAR* pnmh, LRESULT*
plRes);
MainFrm.cpp의 message map에도 다음과 같이 입력해 주고, ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR,
OnToolbarDropDown)
메뉴를 띄우기 위해 함수를 다음과 같이 구현 한다. void CMainFrame::OnToolbarDropDown(NMTOOLBAR* pnmtb, LRESULT
*plr)
{
CWnd *pWnd;
UINT nID;
// Switch on button command id's.
switch (pnmtb->iItem)
{
case ID_DROPDOWN:
pWnd = &m_wndToolBar;
nID = IDR_MENU1;
break;
default:
return;
}
// load and display popup menu
CMenu menu;
menu.LoadMenu(nID);
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup);
CRect rc;
pWnd->SendMessage(TB_GETRECT, pnmtb->iItem, (LPARAM)&rc);
pWnd->ClientToScreen(&rc);
pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON |
TPM_VERTICAL, rc.left, rc.bottom, this, &rc);
}
이렇게 한 후 프로그램을 실행 시켜보면 ID_DROPDOWN ID에 해당하는 버튼옆에 작은 화살표 버튼이 나타나고 그 버튼을 누르면 ID_MENU1 메뉴가 나타나게 된다. - 2001.08.13 Smile Seo -
"MFC" 카테고리의 다른 글
- 공유 섹션 만들기 (0)2007/02/28
- VC++에서도 Regular Expression으로 검색할 수 있다 (0)2007/02/23
- 툴바에 Dropdown버튼 넣기 (0)2007/02/23
- 랭귀지 팩을 만들자!! (0)2007/02/23
- 윈도에 포커스가 가지 못하게 하기 (0)2007/02/23
Tags Dropdown

수안이의 컴퓨터 연구실



Leave your greetings.