< Dialog Bar »ç¿ëÇϱâ >
project name : Dlgbar - SDI - ³ª¸ÓÁö´Â ¸ðµÎ µðÆúÆ®·Î Àû¿ë
Project - Add To Project - Component and Controls...
¿©±â¼ Developer Studio Components ¼±Åà - Dialog bar ¼±Åà - insert¸¦ ´©¸¥´Ù.
Dialog bar name : Dialog Bar,
Member variable name : m_wndDlgBar ·Î Á¤Çß´Ù. ¹°·Ð ¸¶À½´ë·Î °íÃĵµ µÈ´Ù.
¾Æ·¡ÂÊÀÇ ¶óµð¿À ¹öưÀº ¿øÇÏ´Â ´ë·Î ¼±ÅÃÇϰí, ±× ¹Ø üũ¹Ú½º´Â µÑ´Ù üũµÈ »óÅ·ΠµÎÀÚ.
MainFrm.cpp ÆÄÀÏÀ» ¿¾îº¸¸é Áß°£Âë¿¡¼ ´ÙÀ½ºÎºÐÀ» º¼ ¼ö ÀÖ´Ù.
¡¡
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
..........
// TODO: Add a menu item that will toggle the visibility of the
// dialog bar named "My Dialog Bar":
// 1. In ResourceView, open the menu resource that is used by
// the CMainFrame class
// 2. Select the View submenu
// 3. Double-click on the blank item at the bottom of the submenu
// 4. Assign the new item an ID: CG_ID_VIEW_MYDIALOGBAR
// 5. Assign the item a Caption: My Dialog Bar
// TODO: Change the value of CG_ID_VIEW_MYDIALOGBAR to an appropriate value:
// 1. Open the file resource.h
// CG: The following block was inserted by the 'Dialog Bar' component
{
// Initialize dialog bar m_wndDlgBar
if (!m_wndDlgBar.Create(this, CG_IDD_MYDIALOGBAR, CBRS_RIGHT |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE, CG_ID_VIEW_MYDIALOGBAR))
.........
ÁÖ¼®¿¡¼ À§ÀÇ TODO ºÎºÐÀº ¸Þ´º¿¡¼ ´ÙÀ̾ó·Î±×¹Ù¸¦ º¸¿´´Ù°¡ °¨Ãß¾ú´Ù°¡ ÇÏ´Â ¸í·É¾î¸¦ Ãß°¡ÇÏ´Â °ÍÀ» ¼³¸íÇÑ °ÍÀ̰í, ¾Æ·¡ÂÊ TODO ºÎºÐÀº ´ÙÀ̾ó·Î±×¹Ù ID¸¦ ¿øÇÏ´Â ´ë·Î ¹Ù²Ù´Â °ÍÀ» ¼³¸íÇÑ °ÍÀÌ´Ù.
¨ç ¿ì¼± À§ÀÇ Äڵ忡¼ ¹ØÁÙÄ£ ºÎºÐÀ» ¿øÇÏ´Â
ID ·Î ¹Ù²Û´Ù.
- ¿©±â¼´Â IDD_MYDLGBAR ·Î Á¤Çß´Ù.
¨è ´ÙÀ½À¸·Î Resources ÅÇ¿¡¼ Dialog ºÎºÐÀ» º¸¸é CG_IDD_MYDIALOGBAR ¶ó´Â ID°¡ º¸À̴µ¥ À̰͵µ IDD_MYDLGBAR ·Î ¹Ù²ÙÀÚ. ÀÌ·¸°Ô ÇØ¼ ´ÙÀ̾ó·Î±×¹Ù ID¸¦ ¿øÇÏ´Â ´ë·Î ¹Ù²Ü ¼ö ÀÖ´Ù.
¡¡
´ÙÀ½À¸·Î ¸Þ´º¿¡ ´ÙÀ̾ó·Î±×¹Ù¸¦ º¸¿´´Ù °¨Ãß¾ú´ÙÇÏ´Â Äڵ带 Ãß°¡ÇØ º¸ÀÚ.
¨ç String Table¿¡¼ ID¸¦ º¸¸é CG_ID_VIEW_DIALOGBAR °¡ Àִµ¥ À̰ÍÀ» ID_VIEW_DIALOG_BAR ·Î ¹Ù²Û´Ù.
¨è ´ÙÀ½À¸·Î Menu - IDR_MAINFRAME - 'º¸±â(V)' ¿¡ ĸ¼ÇÀº '´ÙÀ̾ó·Î±× ¹Ù' , ID´Â À§¿¡¼ ¹Ù²Û´ë·Î ID_VIEW_DIALOG_BAR ÀÎ ¸Þ´º¸¦ Çϳª Ãß°¡ÇÑ´Ù.
¨é ´ÙÀ½ Äڵ忡¼ ¹ØÁÙÄ£ ºÎºÐÀ» ID_VIEW_DIALOG_BAR ·Î ¹Ù²Û´Ù.
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND_EX(CG_ID_VIEW_DIALOGBAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_DIALOGBAR, OnUpdateControlBarMenu)
//{{AFX_MSG_MAP(CMainFrame)
¨ê ´ÙÀ½ ÄÚµåÀÇ ¹ØÁÙÄ£ ºÎºÐµµ ID_VIEW_DIALOG_BAR ·Î °íÄ£´Ù.
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
................
// Initialize dialog bar m_wndDialogBar
if (!m_wndDialogBar.Create(this, IDD_MYDLGBAR, CBRS_TOP |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
CG_ID_VIEW_DIALOGBAR))
................
note) À§¿¡¼ ¼³¸íÇÑ °Íó·³ ID¸¦ ¹Ù²ÙÁö ¾Ê°í
ÀÖ´Â ±×´ë·Î »ç¿ëÇØµµ ¹«¹æÇÏÁö¸¸ ÇÁ·Î±×·¥
ÀÇ ÀÌÇØ¸¦ µ½±âÀ§ÇØ ID¸¦ º¸´Ù ÀǹÌÀÖ´Â ´Ü¾î·Î
¹Ù²Ù¾îÁØ °ÍÀÌ´Ù.
¡¡
- ´ÙÀ̾ó·Î±×¹Ù À̺¥Æ® ¾ò±â
À§¿Í °°ÀÌ ´ÙÀ̾ó·Î±×¹Ù¸¦ ¸¸µç µÚ Ŭ·¡½º À§Àúµå¸¦ ½ÇÇà½ÃÄÑ º¸¸é 5.0 ¹öÀü¿¡¼´Â ÄÜÆ®·ÑÀÇ ¸Þ½ÃÁö°¡ ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù. (6.0 ¹öÀü¿¡¼´Â ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù¸¸.)
±×·¡¼ Ŭ·¡½º À§Àúµå·Î´Â ´Ù¾çÇÑ À̺¥Æ®¸¦ °¡·Îä¼ ½ÇÇàÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé¼ö°¡ ¾ø½À´Ï´Ù. ±× ÀÌÀ¯´Â Ŭ·¡½º À§Àúµå¿¡ µî·ÏµÇ¾î Àִ Ŭ·¡½º°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. ´ÙÀ̾ó·Î±×¹Ù¸¦ ¸¸µé¸é¼ º¸¸é ´ÙÀ̾ó·Î±×¹Ù¿¡ °ü°èµÈ ÄÚµå´Â ¸ðµÎ MainFrm.cpp ¾È¿¡ ±â¼úµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ̾ó·Î±×¹Ù´Â Ŭ·¡½º À§Àúµå·Î µî·ÏÇÏ¿© ¸¸µç °ÍÀÌ ¾Æ´Ï°í ´ëÈ»óÀÚ¸¦ ¸¸µç´ÙÀ½ ÀÌ ´ëÈ»óÀÚ¸¦ CDialog ¸â¹öÀÇ º¯¼ö·Î ¿¬°áÇÑ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù. ±×·¸´Ù°í À̺¥Æ®¸¦ ¸¸µéÁö ¸øÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. MFCÀÇ ¸ÅÅ©·Î¿¡´Â ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ ON_CBN, ON_LBN, ON_EN, ON_BN °è¿ÀÇ ¸Þ½ÃÁö ¸ÊÇÎ ¸ÅÅ©·Î¸¦ ¸¸µé¾î µÎ¾ú½À´Ï´Ù. ON_CBN Àº ÄÞº¸¹Ú½º¿¡¼ À̺¥Æ®°¡ ¹ß»ýÇÏ¿´À» ¶§ÀÇ ¸Þ¼¼Áö ¸ÅÅ©·ÎÀ̸ç ON_LBNÀº ¸®½ºÆ® ¹Ú½º¿¡¼, ON_ENÀº ¿¡µðÆ® ¹Ú½º¿¡¼, ON_BNÀº ¹öư¿¡¼ÀÔ´Ï´Ù.
¨ç ´ÙÀ̾ó·Î±×¹Ù¿¡ ´ÙÀ½ÀÇ ÄÜÆ®·ÑµéÀ» Ãß°¡ÇÕ´Ï´Ù. ¶óµð¿À ¹öưÀº ID¿Í tap order°¡ ¹Ýµå½Ã ¿¬¼ÓÀûÀ̾î¾ß ÇÕ´Ï´Ù. ±× ÀÌÀ¯´Â ¾Æ·¡ ¨è¹øÀÇ ON_CONTROL_RANGE¿Í °ü°è°¡ ÀÖ½À´Ï´Ù.
¿¡µðÆ® ¹Ú½º - ID : IDC_EDIT1
¹öư - ID : IDC_BUTTON1
ÄÞº¸ ¹Ú½º - ID : IDC_COMBO1
¶óµð¿À ¹öư 3°³ - ID : IDC_RADIO1 ~ IDC_RADIO3
üũ ¹Ú½º - ID : IDC_CHECK1
¨è MainFrm.cpp ÆÄÀÏ¿¡¼ ´ÙÀ½À» Ãß°¡ÇÕ´Ï´Ù.
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND_EX(ID_VIEW_DIALOG_BAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(ID_VIEW_DIALOG_BAR, OnUpdateControlBarMenu)
//{{AFX_MSG_MAP(CMainFrame)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code !
ON_WM_CREATE()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1) // <-Ãß°¡ : ¹öư Ŭ¸¯
ON_CBN_SELCHANGE(IDC_COMBO1, OnComboChange) //<-Ãß°¡ : ÄÞº¸¹Ú½º
ON_BN_CLICKED(IDC_CHECK1, OnCheck1) // <-Ãß°¡ : üũ¹Ú½º
ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO1, IDC_RADIO3, OnRadioButton1)
// <-Ãß°¡ : ¶óµð¿À ¹öư
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
¨ê MainFrm.h ¿¡µµ ´ÙÀ½ ³»¿ëÀ» Ãß°¡ÇÕ´Ï´Ù.
// Generated message map functions
protected:
CDialogBar m_wndDialogBar;
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnButton1(); // <-Ãß°¡ : ¹öưÀÇ Å¬¸¯
afx_msg void OnComboChange(); //<-Ãß°¡ : ÄÞº¸¹Ú½º
afx_msg void OnCheck1(); // <-Ãß°¡ : üũ¹Ú½º
afx_msg void OnRadioButton1(); // <-Ãß°¡ : ¶óµð¿À ¹öư
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
¨ë MainFrm.cpp ¿¡ Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù.
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnButton1() // ¹öưÀÇ Çڵ鷯
{
CEdit *pWnd = (CEdit *)m_wndDialogBar.GetDlgItem(IDC_EDIT1);
// ´ÙÀ̾ó·Î±×¹Ù ¾ÈÀÇ ¿¡µðÆ® ¹Ú½ºÀÇ Æ÷ÀÎÅÍ ¾ò±â
CString str;
pWnd->GetWindowText(str); // ¿¡µðÆ® ¹Ú½ºÀÇ ³»¿ë Àоî¿À±â
AfxMessageBox(str);
}
void CMainFrame::OnComboChange() // ÄÞº¸ ¹Ú½ºÀÇ Çڵ鷯
{
CComboBox *pWnd = (CComboBox *)m_wndDialogBar.GetDlgItem(IDC_COMBO1);
int num = pWnd->GetCurSel();
CString str;
pWnd->GetLBText(num, str);
AfxMessageBox(str);
}
void CMainFrame::OnCheck1() // üũ ¹Ú½ºÀÇ Çڵ鷯
{
CButton *pCheck = (CButton *)m_wndDialogBar.GetDlgItem(IDC_CHECK1);
CButton *pRadio = (CButton *)m_wndDialogBar.GetDlgItem(IDC_RADIO1);
// pCheck->SetCheck(pWnd->GetCheck() ? BST_UNCHECKED : BST_CHECKED);
// üũǥ½Ã¸¦ toggle ÇÏ´Â ÄÚµå
// üũ¹Ú½º propertyÀÇ Styles - auto °¡ üũµÇ¾î ÀÖ´Ù¸é À§ ÄÚµå´Â ÇÊ¿ä¾ø´Ù.
// ¶óµð¿À¹öưÀ» Enable/Disable ½ÃŰ´Â ºÎºÐ - CWnd::EnableWindow(BOOL) »ç¿ë
if(pCheck->GetCheck()) pRadio->EnableWindow(false);
else pRadio->EnableWindow(true);
}
void CMainFrame::OnRadioButton1() // ¶óµð¿À ¹öưÀÇ Çڵ鷯
{
CButton *pRadio1 = (CButton *)m_wndDialogBar.GetDlgItem(IDC_RADIO1);
CButton *pRadio2 = (CButton *)m_wndDialogBar.GetDlgItem(IDC_RADIO2);
CButton *pRadio3 = (CButton *)m_wndDialogBar.GetDlgItem(IDC_RADIO3);
// pRadio1->SetCheck(BST_CHECKED);
// pRadio2->SetCheck(BST_UNCHECKED);
// pRadio3->SetCheck(BST_UNCHECKED);
// ¶óµð¿À ¹öư ¼±ÅÃÇ¥½Ã ÇÏ´Â ºÎºÐ
// ¶óµð¿À ¹öư propertyÀÇ Styles - auto °¡ üũµÇ¾î ÀÖ´Ù¸é À§ ÄÚµå´Â ÇÊ¿ä¾ø´Ù
if(pRadio1->GetCheck()) AfxMessageBox(CString("¶óµð¿À 1"));
else if(pRadio2->GetCheck()) AfxMessageBox(CString("¶óµð¿À 2"));
else AfxMessageBox(CString("¶óµð¿À 3"));
}
note 1)
Button ÄÁÆ®·Ñ¿¡´Â Push Button, Check Box, Radio Button,
Group BoxÀÇ 4°¡Áö°¡ ÀÖ´Ù.
±×·¯¹Ç·Î ±×·¯ÇÑ ÄÁÆ®·Ñµéµµ ¸ðµÎ Button ÄÁÆ®·Ñ¿¡
¾²ÀÌ´Â ¸ÅÅ©·Î¸¦ »ç¿ëÇÏ¿© Á¶ÀÛÇÑ´Ù.
MainFrameÀÇ ¸Þ½ÃÁö ¸Ê¿¡¼ ¶óµð¿À¹öư ºÎºÐÀ» º¸ÀÚ.
ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO1, IDC_RADIO3,
OnRadioButton1)
ÀÌ °ÍÀº ´ÙÀ½À» ÁÙ¿© ¾´ °ÍÀÌ´Ù.
ON_BN_CLICKED(IDC_RADIO1, OnRadioButton1)
ON_BN_CLICKED(IDC_RADIO2, OnRadioButton1)
ON_BN_CLICKED(IDC_RADIO3, OnRadioButton1)
ON_CONTROL_RANGE()´Â °°Àº Á¾·ùÀÇ ¸Þ½ÃÁö¸¦ ¹üÀ§·Î ¹¾î ÇѲ¨¹ø¿¡ ó¸®ÇÒ ¼ö ÀÖµµ·Ï MFC 3.xºÎÅÍ Ãß°¡µÈ ¸ÅÅ©·ÎÀÌ´Ù. ÀÌ ¸ÅÅ©·Î¸¦ ¾²·Á¸é ÄÁÆ®·ÑµéÀÇ ID¿Í tap order°¡ ¿¬¼ÓÀûÀ̾î¾ß ÇÑ´Ù.
¼ø¼°¡ ¸ÂÁö ¾Ê´Ù¸é tap order´Â CTRL-D¸¦ ´·¯ °íÄ¥¼ö ÀÖ°í, ID´Â Resource.h¸¦ ¿¾î ¿øÇÏ´Â ID¿¡ ¹è´çµÈ ¼ýÀÚ¸¦ ¿¬¼ÓÀûÀ¸·Î °íÄ¡¸é µÈ´Ù.
¡¡
note 2)
ÀڱⰡ ¾²´Â ÄÁÆ®·Ñ¿¡ ¿øÇÏ´Â ±â´ÉÀÇ ÇÔ¼ö°¡ ¾ø´Ù¸é CWnd ÀÇ ¸â¹öÇÔ¼ö¸¦ ã¾Æº¸ÀÚ.
´ÙÀ½Àº CWnd ¸â¹öÇÔ¼öÀÇ ÀϺÎÀÌ´Ù.
EnableWindow()
: À©µµ¿ì¸¦ »ç¿ë°¡´ÉÇÏ°Ô Çϰųª »ç¿ë
±ÝÁö½ÃŲ´Ù. »ç¿ëÀÌ ±ÝÁöµÈ À©µµ¿ì´Â ¸¶¿ì½º³ª
Űº¸µå µî ÀÏüÀÇ ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÏ ¼ö ¾ø´Ù. ÁÖ·Î
¹öư µîÀÇ Â÷Àϵå À©µµ¿ì¿¡ »ç¿ëµÈ´Ù.
GetClientRect()
: À©µµ¿ìÀÇ ÀÛ¾÷¿µ¿ªÀ» ±¸ÇÑ´Ù. Á»ó´ÜÀº Ç×»ó
(0,0)ÀÌ¸ç ¿ìÇÏ´ÜÀº ÀÛ¾÷¿µ¿ªÀÇ Å©±â¸¦ ³ªÅ¸³½´Ù.
GetWindowRect()
: À©µµ¿ì°¡ Â÷ÁöÇϰí ÀÖ´Â ¿µ¿ªÀÇ È¸éÁÂÇ¥¸¦
±¸ÇÑ´Ù. ÀÌ ¿µ¿ª¿¡´Â ÀÛ¾÷¿µ¿ª»Ó¸¸ ¾Æ´Ï¶ó
ŸÀÌÆ² ¹Ù, ½ºÅ©·Ñ ¹Ù, °æ°è¼±±îÁö ¸ðµÎ Æ÷ÇԵȴÙ.
GetWindowText() / SetWindowText()
: À©µµ¿ìÀÇ Å¸ÀÌÆ² ¹Ù¿¡ Ãâ·ÂµÇ¾î Àִ ĸ¼ÇÀ»
±¸ÇÑ´Ù. / º¯°æÇÑ´Ù. ÄÁÆ®·ÑÀÏ °æ¿ì ÄÁÆ®·ÑÀÇ
ÅØ½ºÆ® ¹®ÀÚ¿ÀÌ ÀÐÇôÁø´Ù. / º¯°æµÈ´Ù.
¡¡
note 3)
MFC 4.x¿¡´Â ´ÙÀ½°ú °°Àº ¸ÅÅ©·ÎµéÀÌ ÀÖ´Ù. (ÀϹÝÀûÀÎ °øÅë ¸ÅÅ©·Î Á¦¿Ü)
| ON_COMMAND() ON_COMMAND_RANGE() ON_COMMAND_EX() ON_COMMAND_EX_RANGE() ON_UPDATE_COMMAND_UI() ON_UPDATE_COMMAND_UI_RANGE() ON_UPDATE_COMMAND_LI_REFLECT() ON_NOTIFY() ON_NOTIFY_RANGE() ON_NOTIFY_EX() ON_NOTIFY_EX_RANGE() ON_NOTIFY_REFLECT() ON_NOTIFY_REFLECT_EX() |
ON_CONTROL() ON_CONTROL_RANGE() ON_CONTROL_REFLECT() ON_CONTROL_REFLECT_EX() ON_WM_CTLCOLOR_REFLECT() ON_WM_DRAWITEM_REFLECT() ON_WM_MEASUREITEM_REFLECT() ON_WM_DELETEITEM_REFLECT() ON_WM_CHARTOITEM_REFLECT() ON_WM_VKEYTOITEM_REFLECT() ON_WM_HSCROLL_REFLECT() ON_WM_VSCROLL_REFLECT() ON_WM_PARENTNOTIFY_REFLECT() |