À©µµ¿ì ÇÁ·Î±×·¡¹Ö ÀÚ·á |
---|
Á¦¸ñ | [MFC] Status Bar 1998/08/03 (20:42) |
À̸§ | swindler |
¹øÈ£ | 55 |
Á¶È¸ | 422 |
º»¹® |
»óŹٴ ¿À·ÎÁö pane¿¡ ÅؽºÆ®¸¦ Ãâ·ÂÇÏ´Â ¿ªÇÒ¸¸ Çϸç, ¸Þ½ÃÁö ¶óÀÎ ÆÐÀΰú »óÅ ǥ½ÃÀÚ ÆÐÀÎ µÎ °¡Áö ÇüŸ¦ Áö¿øÇÑ´Ù. AppWizard°¡ MainFrm.cppÆÄÀÏ¿¡ »ý¼ºÇÑ Á¤Àû ¹è¿ indicators[] Àº ¾îÇø®ÄÉÀ̼ÇÀÇ »óŹ٠ÆÐÀÎÀ» Á¤ÀÇÇÏ´Â °ÍÀÌ´Ù. ID_SEPARATOR´Â ¸Þ½ÃÁö ¶óÀÎ ÆÐÀÎÀ» Á¤ÀÇÇÑ´Ù.±× ¿ÜÀÇ »ó¼ö´Â »óÅ ǥ½ÃÀÚ ÆÐÀÎÀ» Á¤ÀÇÇÏ´Â ¹®ÀÚ¿ ¸®¼Ò½º IDÀÌ´Ù. CStatusBar::SetIndicators()ÇÔ¼ö´Â ¹è¿ indicators[]ÀÇ ³»¿ë¿¡ µû¶ó »óŹٸ¦ ±¸¼ºÇÑ´Ù. ¸Þ½ÃÁö ¶óÀÎ ÆÐÀÎÀº µ¿ÀûÀÎ ¹®ÀÚ¿À» Ãâ·ÂÇÑ´Ù. ¸ÕÀú »óŹ٠°´Ã¼¿¡ ¾×¼¼½ºÇÑ ´ÙÀ½ SetPaneText()ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¼³Á¤ÇÑ´Ù. CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar* pStatus=&pFrame->m_wndStatusBar; pStatus->SetPaneText(0,"message for first pane"); »óÅ ǥÁö»ç ÆÐÀÎÀº ´ÜÀÏ ¸®¼Ò½º¿¡ ÀÇÇØ Á¦°øµÇ´Â ¹®ÀÚ¿°ú ¿¬°áµÇ¸ç, ÀÌ ¹®ÀÚ¿Àº °»½Å ¸í·É UI¸Þ½ÃÁö Çڵ鷯 ÇÔ¼ö¿¡ ÀÇÇØ Ç¥½ÃµÇ°Å³ª »ç¶óÁø´Ù. ON_UPDATE_COMMAND_UI(ID_INDICATORS_CAPS,OnUpdateKeyCapsLock) // ÀÌ ÁÙÀº ¸Þ½ÃÁö ¸Ê ¿£Æ®¸®¿¡ µé¾î°£´Ù. void CMainFrame::OnUpdateKeyCapsLock(CCmdUI* pCmdUI) { pCmdUI->Enable(::GetKeyState(VK_CAPITAL)&1); } »óŹٴ Â÷Àϵå À©µµ¿ì ID·Î AFX_IDW_STATUS_BAR¸¦ µðÆúÆ®·Î ÇÒ´ç¹Þ´Â´Ù. »óŹٸ¦ Á¦¾îÇϱâ À§Çؼ´Â µðÆúÆ® ID¸¦ ´Ù¸¥ Â÷Àϵå À©µµ¿ì ID¸¦ »ç¿ëÇØ¾ß ÇÏ°í ´Ù¸¥ Ç¥½ÃÀÚ ID»ó¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.(»óŹÙÀÇ Â÷Àϵå À©µµ¿ì ID¸¦ ¹Ù²Ù´Â ÀÌÀ¯´Â ÇÁ·¹ÀÓ¿öÅ©°¡ 0¹ø ÆÐÀο¡ ¸Þ´º ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÏÁö ¸øÇϵµ·Ï Çϱâ À§ÇÔÀÌ´Ù.) MainFrame.cppÆÄÀÏ¿¡ OnCreate()ÇÔ¼ö¿¡¼ È£ÃâµÇ´Â CStatusBar::Create()ÇÔ¼ö¸¦ º¯°æÇØ¾ß ÇÑ´Ù. m_wndStatusBar.Create(this,WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, ID_MY_STATUS_BAR); Resource Symbols...¸Þ´º ¾ÆÀÌÅÛÀ» ¼±ÅÃÇÏ¿© ¸®¼Ò½º ½Éº¼ ¿¡µðÅÍ¿¡¼ ID_MY_STATUS_BAR»ó¼ö¸¦ Á¤ÀÇÇÑ´Ù. Ç¥ÁØ ¾îÇø®ÄÉÀ̼ÇÀÇ View¸Þ´º¿¡¼ »ç¿ëÀÚ°¡ »óŹٸ¦ show/hide ÇÒ¼ö ÀÖ´Â ±â´ÉÀÌ ÀÖ´Ù. ÀÌ°ÍÀº ID°¡ AFX_IDW_STATUS_BARÀÎ »óŹٿ¡ Àû¿ëµÇ¹Ç·Î ÀÌ ¸Þ´º ¾ÆÀÌÅÛµµ º¯°æÇØ¾ß ÇÑ´Ù. Áï, ÇÁ·¹ÀÓ Å¬·¡½º¿¡¼ ¸Þ½ÃÁö ¸Ê ¿£Æ®¸£ ±×¸®°í, ID_VIEW_STATUS_BAR¸í·É°ú °»½Å ¸í·É UI¸Þ½ÃÁö Çڵ鷯¸¦ »õ·Î ÀÛ¼ºÇؾ߸¸ ÇÑ´Ù. ID_VIEW_STATUS_BAR´Â »óŹ٠¸Þ´º ¾ÆÀÌÅÛÀÇ IDÀÌ´Ù. ex) »óŹٿ¡ ¸¶¿ì½º x,yÁÂÇ¥¸¦ ¸Þ½ÃÁö ¶óÀÎ ÆÐÀÎÀ¸·Î ¼³Á¤ÇÏ°í, ¿ÞÂÊ°ú ¿À¸¥ÂÊ ¹öÆ°À» »óÅ ǥ½ÃÀÚ ÆÐÀÎÀ¸·Î ¼³Á¤ÇØ º¸ÀÚ. 1. String Table¿¡¼ ID_INDICATOR_LEFT, ID_INDICATOR_RIGHT¸¦ LEFT, RIGHT·Î Á¤ÀÇÇÑ´Ù. 2. Resource Symbols...¸Þ´º¿¡¼ ID_MY_STATUS_BAR¸¦ Ãß°¡ÇÏ°í µðÆúÆ® °ªÀ» ¹Þ¾ÆµéÀδÙ. 3. CMainFrame¿¡¼ ID_VIEW_STATUS_BAR¿¡ ´ëÇÑ ¸Þ½ÃÁö COMMAND¿Í UPDATE_COMMAND_UI¸¦ Ãß°¡ÇÑ´Ù. 4. ID_INDICATOR_LEFT(RIGHT)´Â ClassWizard°¡ ¸ÊÇÎÇÒ ¼ö ¾øÀ¸¹Ç·Î ¸Þ½ÃÁö Çڵ鷯¸¦ ¼öÀÛ¾÷À¸·Î Ãß°¡ÇØ¾ß ÇÑ´Ù. afx_msg void OnUpdateLeft(CCmdUI* pCmdUI) afx_msg void OnUpdateRight(CCmdUI* pCmdUI) 5. MainFrm.hÀÇ m_wndStatusBar¸¦ protected¿¡¼ public À¸·Î º¯°æÇÑ´Ù. 6. indicators[]={ID_SEPARATOR,ID_SEPARATOR, ID_INDICATOR_LEFT, ID_INDICATOR_RIGHT]; ·Î º¯°æÇÑ´Ù. 7. OnCreateÇÔ¼ö¸¦ ÆíÁýÇÑ´Ù. m_wndStatusBar.Create(this,WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,ID_MY_STATUS_BAR); 8. CMainFrame³»¿¡ ¸Þ½ÃÁö ¸Ê ¿£Æ®¸®¸¦ Ãß°¡ÇÑ´Ù. ON_UPDATE_COMMAND_UI(ID_INDICATOR_LEFT,OnUpdateLeft) ON_UPDATE_COMMAND_UI(ID_INDICATOR_RIGHT,OnUpdateRight) 9. CMainFrame::OnUpdateLeft(CCmdUI* pCmdUI) { pCmdUI->Enable(::GetKeyState(VK_LBUTTON)<0); } CMainFrame::OnUpdateRight(CCmdUI* pCmdUI) { pCmdUI->Enable(::GetKeyState(VK_RBUTTON)<0); } 10. CMainFrame::OnViewStatusBar() { m_wndStatusBar.ShowWindow(m_wndStatusBar.GetStyle() & WS_VISIBLE)==0); RecalcLayout(); } CMainFrame::OnUpdateViewStatusBar(CCmdUI* pCmdUI) { pCmdUI->SetCheck((m_wndStatusBar.GetStyle() & WS_VISIBLE)!=0); } 11. CView::OnMouseMove(UINT nFlags, CPoint point) { CString str; CMainFrame* pFrame=(CMainFrame*) AfxGetApp()->m_pMainWnd; CStatusBar* pStatus=&pFrame->m_wndStatusBar; if(pStatus){ str.Format("x=%d",point.x); pStatus->SetPaneText(0,str); str.Format("y=%d",point.y); pStatus->SetPaneText(1,str); } } 12. ù¹ø° ÆÐÀεµ °æ°è¼±ÀÌ Ç¥½ÃµÇ°Ô Çϰųª, »óŹٰ¡ º¸±â ÁÁ°Ô ´Ã¾î³ª°í ÁÙ¾îµé°Ô ÇÒ·Á¸é, m_wndStatusBar.SetPaneInfo(0,0,0,50); m_wndStatusBar.SetPaneInfo(1,0,SBPS_STRETCH,50); 13. CView.cpp¿¡ #include "MainFrm.h"¸¦ Ãß°¡ÇÑ´Ù. |