為狀態(tài)欄添加顯示輔助信息功能_第1頁
為狀態(tài)欄添加顯示輔助信息功能_第2頁
為狀態(tài)欄添加顯示輔助信息功能_第3頁
為狀態(tài)欄添加顯示輔助信息功能_第4頁
為狀態(tài)欄添加顯示輔助信息功能_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、為狀態(tài)欄添加像素位置,度量單位,圖像大小以及圖像位數(shù)四個信息一、在主框架中定義狀態(tài)欄各個分欄位置。1、在CMainFrame.h中,添加:#define PANE_CURSOR_POSITION1#define PANE_LENGTH_UNIT2#define PANE_IMAGE_SIZE3#define PANE_BIT_COUNT42、在CMainFrame.cpp中,indicators數(shù)組處改為:static UINT indicators =ID_SEPARATOR, / status line indicator/ cursor position ID_SEPARATOR,/ l

2、ength unitID_SEPARATOR,/ image sizeID_SEPARATOR,/ bit countID_SEPARATOR,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;3、在OnCreate函數(shù)中,添加如下代碼:int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/siz

3、eof(UINT)TRACE0("Failed to create status barn");return -1; / fail to create/ add panesm_wndStatusBar.SetPaneInfo( PANE_CURSOR_POSITION, ID_SEPARATOR, SBPS_NORMAL, 72); m_wndStatusBar.SetPaneInfo( PANE_LENGTH_UNIT, ID_SEPARATOR, SBPS_NORMAL, 25); m_wndStatusBar.SetPaneInfo( PANE_IMAGE_SIZE,

4、 ID_SEPARATOR, SBPS_NORMAL, 72);m_wndStatusBar.SetPaneInfo( PANE_BIT_COUNT, ID_SEPARATOR, SBPS_NORMAL, 28);二、添加各狀態(tài)欄分欄的控制函數(shù)1、在String Table中,添加以下幾個字串:2、在View類中,添加成員變量:int m_nLengthUnit,并在View類的構(gòu)造函數(shù)中,添加初始化代碼:m_nLengthUnit = MM_TEXT;3、在View類中,添加以下幾個成員函數(shù):voidSetStatusBarLengthUnit(int nUnit);voidSetStatu

5、sBarCursorPosition(CPoint point);voidSetStatusBarImageSize(CSize size);voidSetLengthUnit(int nUnit);voidSetStatusBarBitCount(WORD wBitcount);4、分別為它們添加函數(shù)代碼:void CImageBoardView:SetStatusBarBitCount(WORD wBitcount)CString str;switch (wBitcount)case 1:str.LoadString(IDS_BITCOUNT_1);break;case 4:str.Loa

6、dString(IDS_BITCOUNT_4);break;case 8:str.LoadString(IDS_BITCOUNT_8);break;case 24:default:str.LoadString(IDS_BITCOUNT_24);break;CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);ASSERT_KINDOF(CMainFrame, pMainFrame); pMainFrame->m_wndStatusBar.SetPaneText(PANE_BIT_COUNT, str);voi

7、d CImageBoardView:SetStatusBarLengthUnit(int nUnit)CString str;switch (m_nLengthUnit)case MM_HIENGLISH:str.LoadString(IDS_LENGTH_UNIT_INCH);break;case MM_HIMETRIC:str.LoadString(IDS_LENGTH_UNIT_MM);break;case MM_TEXT:default:str.LoadString(IDS_LENGTH_UNIT_PIXEL);break;CMainFrame* pMainFrame= (CMainF

8、rame*)( AfxGetApp()->m_pMainWnd);ASSERT_KINDOF(CMainFrame, pMainFrame); pMainFrame->m_wndStatusBar.SetPaneText(PANE_LENGTH_UNIT, str);void CImageBoardView:SetStatusBarCursorPosition(CPoint point)CWindowDC dc(this);dc.LPtoDP(&point);int nOldUnit = dc.SetMapMode(m_nLengthUnit);dc.DPtoLP(&

9、;point);dc.SetMapMode(nOldUnit);CString msg;double fCX = abs(point.x), fCY = abs(point.y);switch (m_nLengthUnit)case MM_TEXT:msg.Format("%d,%d", (int)fCX, (int)fCY);break;case MM_HIENGLISH:fCX /= 1000.0;fCY /= 1000.0;msg.Format("%.2f,%.2f", fCX, fCY);break;case MM_HIMETRIC:fCX /=

10、 100.0;fCY /= 100.0;msg.Format("%.1f,%.1f", fCX, fCY);break;CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);ASSERT_KINDOF(CMainFrame, pMainFrame); pMainFrame->m_wndStatusBar.SetPaneText(PANE_CURSOR_POSITION, msg);void CImageBoardView:SetStatusBarImageSize(CSize size)C

11、WindowDC dc(this);dc.LPtoDP(&size);int nOldUnit = dc.SetMapMode(m_nLengthUnit);dc.DPtoLP(&size);dc.SetMapMode(nOldUnit);CString msg;double fCX = abs(size.cx), fCY = abs(size.cy);switch (m_nLengthUnit)case MM_TEXT:msg.Format("%d,%d", (int)fCX, (int)fCY);break;case MM_HIENGLISH:fCX /

12、= 1000.0;fCY /= 1000.0;msg.Format("%.2f,%.2f", fCX, fCY);break;case MM_HIMETRIC:fCX /= 100.0;fCY /= 100.0;msg.Format("%.1f,%.1f", fCX, fCY);break;CMainFrame* pMainFrame= (CMainFrame*)( AfxGetApp()->m_pMainWnd);ASSERT_KINDOF(CMainFrame, pMainFrame); pMainFrame->m_wndStatusBa

13、r.SetPaneText(PANE_IMAGE_SIZE, msg);void CImageBoardView:SetLengthUnit(int nUnit) m_nLengthUnit = nUnit;SetStatusBarLengthUnit(nUnit);CSize sizeTotal(m_pDib->GetWidth(), m_pDib->GetHeight();SetStatusBarImageSize(sizeTotal);CMenu *pMenu = AfxGetApp()->m_pMainWnd->GetMenu();switch (m_nLeng

14、thUnit)case MM_HIENGLISH:pMenu->CheckMenuRadioItem(IDM_PIXEL, IDM_MM, IDM_INCH, MF_BYCOMMAND);break;case MM_HIMETRIC:pMenu->CheckMenuRadioItem(IDM_PIXEL, IDM_MM, IDM_MM, MF_BYCOMMAND);break;case MM_TEXT:default:pMenu->CheckMenuRadioItem(IDM_PIXEL, IDM_MM, IDM_PIXEL, MF_BYCOMMAND);break;5、為V

15、iew類添加OnActivateView虛函數(shù),在函數(shù)中添加如下代碼:void CImageBoardView:OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) if (bActivate)SetLengthUnit(m_nLengthUnit);SetStatusBarBitCount(m_pDib->GetBitCount();CScrollView:OnActivateView(bActivate, pActivateView, pDeactiveView);6、為View類添加OnMouseMove函數(shù):void CImageBoardView:OnMouseMove(UINT nFlags, CPoint point) SetStatusBarCursorPosition(point);CScrollView:OnMouseMove(nFlags, point);7、將m_wndStatusBar的屬性改為public。三、實現(xiàn)測量單位切換1、在菜單中,添加“長度單位”菜單:相應(yīng)菜單項的ID為:像素IDM_PIXEL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論