




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年生態(tài)旅游可持續(xù)發(fā)展規(guī)劃與管理旅游目的地生態(tài)旅游發(fā)展規(guī)劃報告
- 智能電網(wǎng)在2025年能源行業(yè)中的應(yīng)用與產(chǎn)業(yè)生態(tài)構(gòu)建報告
- 智能設(shè)備配對管理制度
- 大公司工廠績效管理制度
- 印刷廠安全生產(chǎn)管理制度
- 婦產(chǎn)科儀器設(shè)備管理制度
- 護(hù)理制度流程化管理制度
- 客服辦公室設(shè)備管理制度
- 春季魚塘開口管理制度
- 產(chǎn)品銷售群規(guī)定管理制度
- 塑膠跑道標(biāo)線施工方案
- 《大學(xué)生心理健康教育》(第三版)課程標(biāo)準(zhǔn)
- 車輛購置的可行性研究報告
- 南京市既有建筑改造施工圖設(shè)計審查指南(建筑與設(shè)備專業(yè))(試行)2025
- 物流調(diào)度述職報告
- 康復(fù)護(hù)理行走障礙指導(dǎo)步行訓(xùn)練課件
- 鋼結(jié)構(gòu)用高強(qiáng)度大六角頭螺栓連接副知識培訓(xùn)
- 2025年語文素養(yǎng)“詩詞大會”知識競賽題庫及答案
- 《智能網(wǎng)聯(lián)汽車用數(shù)據(jù)分發(fā)服務(wù)(DDS)測試方法》
- 《花的話完整》課件
- 《上海市溫室氣體排放核算與報告指南(試行)》(SHMRV-001-2024)文
評論
0/150
提交評論