




已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
AO開發(fā)筆記(實(shí)戰(zhàn)篇)用VC+AO開發(fā)獨(dú)立的應(yīng)用程序(1)AO開發(fā)筆記(實(shí)戰(zhàn)篇)用VC+AO開發(fā)獨(dú)立的應(yīng)用程序(1) 作者:Snoopy 轉(zhuǎn)貼自:本站原創(chuàng) 點(diǎn)擊數(shù):679 文章錄入:snoopy 一、AO簡(jiǎn)介 ArcObject(以下簡(jiǎn)稱AO)是ESRI公司構(gòu)建ArcGIS系列軟件的基礎(chǔ)技術(shù)框架,是一個(gè)龐大的COM組件集。AO不是為最終用戶提供的,它是為開發(fā)人員提供的二次開發(fā)組件,通過AO用戶可以實(shí)現(xiàn)功能強(qiáng)大的應(yīng)用軟件,據(jù)說(shuō)如果水平足夠高,用它可以開發(fā)出一套ArcMap來(lái)。只要用戶購(gòu)買來(lái)ESRI的產(chǎn)品,都會(huì)擁有AO組件,從ArcGIS9.0開始,ESRI推出了ArcEngine,使得用AO開發(fā)的程序不再需要ArcGIS Desktop,只需要購(gòu)買安裝ArcEngine運(yùn)行時(shí)即可。 由于AO是基于COM技術(shù)開發(fā)出的組件式GIS開發(fā)產(chǎn)品,因此可以選擇自己熟悉的支持COM標(biāo)準(zhǔn)的開發(fā)平臺(tái)來(lái)進(jìn)行GIS應(yīng)用開發(fā),如:Visual C+、Visual Basic、Delphi、.NET等,另外也可以在ArcGIS上使用VBA環(huán)境進(jìn)行二次開發(fā)。 在真正用AO來(lái)進(jìn)行GIS應(yīng)用開發(fā)之前,至少需要熟悉一種開發(fā)平臺(tái)、COM開發(fā)的一些基本知識(shí)。在以后的文章中將以Visual C+6.0為開發(fā)工具進(jìn)行介紹,并且假定你對(duì)Visual C+6.0有一定的了解,對(duì)COM應(yīng)用也有一定的認(rèn)識(shí)。 在我們開始編寫第一個(gè)程序之前,你的系統(tǒng)中除了要安裝Visual C+6.0之外,還應(yīng)該安裝有ArcGIS Desktop 和ArcGIS DeveloperKit,或者裝有ArcEngine開發(fā)包和運(yùn)行包。在ArcGIS DeveloperKit和ArcEngine開發(fā)包里都有AO的開發(fā)文檔以及幾種開發(fā)語(yǔ)言的實(shí)例,一般安裝在:ArcGIS安裝路徑ArcGISDeveloperKit下面。在開發(fā)文檔中除了各種接口和類的介紹外,還有DeveloperKitsamples下面的實(shí)例的介紹,里面有許多實(shí)用的例子是我們學(xué)習(xí)AO編程好資料。二、實(shí)現(xiàn)一個(gè)簡(jiǎn)單的AO程序 接下來(lái)我們就從最簡(jiǎn)單的一個(gè)可以打開地圖的例子開始。 首先新建一個(gè)MFC的項(xiàng)目,如下圖:1點(diǎn)擊OK按鈕進(jìn)入下一步:2選擇Single document點(diǎn)擊Next在后面的幾步中選擇默認(rèn)設(shè)置,在最后一步時(shí),選擇View類的基類為CFormView,如下圖:3點(diǎn)擊Finish,新的項(xiàng)目就建好了。接下來(lái)右鍵點(diǎn)擊From對(duì)話框,在出現(xiàn)的菜單里選擇Insert ActiveX Controls。4在出現(xiàn)的對(duì)話框里選擇ESRI MapControl,確定。5接下來(lái)查看修改ESRI MapControl的屬性(如下圖),選擇Control頁(yè),在Map Document:處選擇一個(gè)mxd/mxt/pmf文件,即要加載的地圖文檔。6或者選擇Map頁(yè)(如下圖:),在右邊的list中添加圖層也可。7保存修改,編譯程序。運(yùn)行就可以看到一個(gè)簡(jiǎn)單顯示地圖的程序了(如下圖)。8三、本章小結(jié) 上面只是一個(gè)簡(jiǎn)單實(shí)例,里面有許多功能都沒有,當(dāng)你把程序窗口最大化時(shí)你會(huì)發(fā)現(xiàn),地圖窗口沒有隨窗口放大。在下一節(jié)我們將完善這個(gè)功能,并添加地圖漫游的一些功能。 作者:Snoopy轉(zhuǎn)自3S技術(shù)AO開發(fā)筆記(實(shí)戰(zhàn)篇)用VC+AO開發(fā)獨(dú)立的應(yīng)用程序(2)作者:Snoopy文章來(lái)源:中國(guó)3S網(wǎng)站()點(diǎn)擊數(shù):4297更新時(shí)間:2006-12-11摘要:在上一節(jié)中我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的顯示地圖的程序。下面我們?cè)谒幕A(chǔ)上完善和添加以下新的功能:1當(dāng)框架窗口大小更改時(shí)改變地圖控件窗口使之隨框架窗口增大。2增加地圖漫游功能:移動(dòng)、放大、縮小、顯示全圖一、更改項(xiàng)目配置、添加引入庫(kù)代碼在本節(jié)中我們將使用AO提供的一些接口,所以需要更改項(xiàng)目配置,以及添加引用AO庫(kù)的代碼。首先打開上一節(jié)所建項(xiàng)目。選擇菜單Tools-Options-Directories頁(yè)在Include files里添加兩個(gè)路徑(如果你的ArcGIS的安裝目錄在其它盤,需做相應(yīng)改動(dòng)):C:PROGRAM FILESARCGISCOMC:PROGRAM FILESARCGISBIN在項(xiàng)目的StdAfx.h中添加如下代碼:/ AO引入庫(kù)#pragmawarning(push)#pragmawarning(disable: 4192)#pragmawarning(disable: 4146)#importesriSystem.olbraw_interfaces_only raw_native_types no_namespace named_guids exclude(OLE_COLOR,OLE_HANDLE,VARTYPE,IStatusBar)#importesriSystemUI.olbraw_interfaces_only, raw_native_types, no_namespace, named_guids exclude(IProgressDialog)#importesriGeometry.olbraw_interfaces_only raw_native_types no_namespace named_guids#importesriDisplay.olbraw_interfaces_only raw_native_types no_namespace named_guids#importesriGeoDatabase.olbraw_interfaces_only raw_native_types no_namespace named_guids#importesriCarto.olbraw_interfaces_only, raw_native_types, no_namespace, named_guids#importesriDataSourcesFile.olbraw_interfaces_only raw_native_types no_namespace named_guids exclude(OLE_COLOR,OLE_HANDLE)#importesriDataSourcesGDB.olbraw_interfaces_only raw_native_types no_namespace named_guids exclude(OLE_COLOR,OLE_HANDLE)#importToolbarControl.ocxraw_interfaces_only raw_native_types no_namespace named_guids#importTOCControl.ocxraw_interfaces_only raw_native_types no_namespace named_guids#importMapControl.ocxraw_interfaces_only raw_native_types no_namespace named_guids#importPageLayoutControl.ocxraw_interfaces_only raw_native_types no_namespace named_guids#importArcReaderControl.ocxraw_interfaces_only raw_native_types no_namespace named_guids#pragmawarning(pop)二、添加地圖瀏覽功能,完善地圖窗口縮放1、使MapControl隨窗口放大首先為CAOExStep1View添加一個(gè)保護(hù)類型的成員變量:IMapControl3Ptrm_ipMapControl;/地圖控件該變量保存指向MapContrl的接口指針。然后在類CAOExStep1View的成員函數(shù)OnInitialUpdate添加如下代碼初始化它(紅色部分):void CAOExStep1View:OnInitialUpdate()/此處省略其它代碼/獲取MapControl指針m_ipMapControl = GetDlgItem(IDC_MAPCONTROL1)-GetControlUnknown();為類CAOExStep1View添加窗口改變大小事件函數(shù),并在里面添加如下代碼(紅色部分):void CAOExStep1View:OnSize(UINT nType, int cx, int cy)CFormView:OnSize(nType, cx, cy);/ View窗口改變大小時(shí)改變MapControl大小if(m_ipMapControl!=NULL)CRect rc;GetClientRect(rc);GetDlgItem(IDC_MAPCONTROL1)-MoveWindow(rc);經(jīng)過上面的修改,現(xiàn)在重新編譯程序,把窗口最大化,你會(huì)看到地圖窗口隨之放大。2、接下來(lái)我們來(lái)添加地圖漫游功能首先把項(xiàng)目默認(rèn)的工具欄按鈕全部刪除只留下關(guān)于按鈕。然后添加5個(gè)按鈕,按鈕ID和提示文本如下,按鈕的圖標(biāo)可以使用ArcGIS的相應(yīng)功能的圖標(biāo)(ArcGIS的一些圖標(biāo)保存在按照目錄的BinIcons下面,是一系列bmp文件)。ID_MAP_ARROW選擇狀態(tài)n選擇狀態(tài)ID_MAP_PAN地圖平移n地圖平移ID_MAP_ZOOMIN地圖放大n地圖放大ID_MAP_ZOOMOUT地圖縮小n地圖縮小ID_MAP_FULLEXTENT顯示全圖n顯示全圖為了處理鼠標(biāo)事件我們需要為MapControl添加一個(gè)onMouseDown事件函數(shù),在類CAOExStep1View里添加上面添加的工具欄按鈕的響應(yīng)函數(shù),另外我們還需要在類CAOExStep1View頭文件里添加一個(gè)標(biāo)志當(dāng)前鼠標(biāo)操作狀態(tài)的成員變量:esriARToolm_ARTool;/鼠標(biāo)當(dāng)前狀態(tài)在工具欄響應(yīng)函數(shù)中添加如下代碼(紅色部分):/選擇狀態(tài)void CAOExStep1View:OnMapArrow()m_ARTool = esriARToolNoneSelected;m_ipMapControl-put_MousePointer(esriPointerDefault);/地圖平移void CAOExStep1View:OnMapPan()m_ARTool = esriARToolMapPan;m_ipMapControl-put_MousePointer(esriPointerPan);/地圖放大void CAOExStep1View:OnMapZoomin()m_ARTool = esriARToolMapZoomIn;m_ipMapControl-put_MousePointer(esriPointerZoomIn);/地圖縮小void CAOExStep1View:OnMapZoomout()m_ARTool = esriARToolMapZoomOut;m_ipMapControl-put_MousePointer(esriPointerZoomOut);/顯示全圖void CAOExStep1View:OnMapFullextent()IActiveViewPtr ipActiveView;HRESULT hr=m_ipMapControl-get_ActiveView(&ipActiveView);if (FAILED(hr) return;IEnvelopePtr ipEnvelope;hr = ipActiveView-get_FullExtent(&ipEnvelope);if (FAILED(hr) return;ipActiveView-put_Extent(ipEnvelope);ipActiveView-Refresh();未完,見AO開發(fā)筆記(實(shí)戰(zhàn)篇)用VC+AO開發(fā)獨(dú)立的應(yīng)用程序(2)續(xù)。AO開發(fā)筆記(實(shí)戰(zhàn)篇)用VC+AO開發(fā)獨(dú)立的應(yīng)用程序(2)續(xù)作者:Snoopy文章來(lái)源:中國(guó)3S網(wǎng)站()點(diǎn)擊數(shù):2619更新時(shí)間:2006-12-11摘要:在鼠標(biāo)事件函數(shù)中添加如下代碼(紅色部分):void CAOExStep1View:OnonMouseDownMapcontrol1(long button, long shift, long x, long y, double mapX, double mapY)if(1 = button) /鼠標(biāo)左鍵按下IActiveViewPtr ipActiveView;HRESULT hr=m_ipMapControl-get_ActiveView(&ipActiveView);if (ipActiveView = NULL) return ;switch(m_ARTool)case esriARToolNoneSelected:break;case esriARToolMapZoomIn: /地圖放大IEnvelopePtr ipEnvelope;hr = ipActiveView-get_Extent(&ipEnvelope);if (FAILED(hr) return ;hr = m_ipMapControl-TrackRectangle(&ipEnvelope);if (FAILED(hr) return ;if(ipEnvelope = NULL) return ;double XMin,YMin,XMax,YMax;XMin=YMin=XMax=YMax=0.0;if(S_OK !=ipEnvelope-get_XMin(&XMin) XMin = 0.0;if(S_OK !=ipEnvelope-get_YMin(&YMin) YMin = 0.0; if(S_OK !=ipEnvelope-get_XMax(&XMax) XMax = 0.0;if(S_OK !=ipEnvelope-get_YMax(&YMax) YMax = 0.0;if(XMin!=XMax&YMin!=YMax)/用戶拉框選擇區(qū)域放大ipActiveView-put_Extent(ipEnvelope);ipActiveView-Refresh();else/用戶點(diǎn)擊進(jìn)行放大ipActiveView-get_Extent(&ipEnvelope);if (FAILED(hr) return ;IPointPtr ipPoint(CLSID_Point);ipPoint-put_X(mapX);ipPoint-put_Y(mapY);/設(shè)置中心點(diǎn)為用戶點(diǎn)擊為主ipEnvelope-CenterAt(ipPoint);ipEnvelope-Expand(0.5, 0.5, true);ipActiveView-put_Extent(ipEnvelope);ipActiveView-Refresh();break;case esriARToolMapZoomOut: /地圖縮小IEnvelopePtr ipEnvelope;hr = ipActiveView-get_Extent(&ipEnvelope);if (FAILED(hr) return ;IPointPtr ipPoint(CLSID_Point);ipPoint-put_X(mapX);ipPoint-put_Y(mapY); ipEnvelope-CenterAt(ipPoint);/設(shè)置中心點(diǎn)為用戶點(diǎn)擊為主ipEnvelope-Expand(2, 2, true);ipActiveView-put_Extent(ipEnvelope);ipActiveView-Refresh();break;case esriARToolMapPan: /地圖平移m_ipMapControl-Pan();break;default:break;為工具欄前四個(gè)按鈕添加UPDATE_COMMAND_UI更新函數(shù),代碼如下:/更新工具欄void CAOExStep1View:OnUpdateMapArrow(CCmdUI* pCmdUI)pCmdUI-SetCheck(m_ARTool = esriARToolNoneSelected);void CAOExStep1View:OnUpdateMapPan(CCmdUI* pCmdUI)pCmdUI-SetCheck(m_ARTool = esriARToolMapPan);void CAOExStep1View:OnUpdateMapZoomin(CCmdUI* pCmdUI)pCmdUI-SetCheck(m_ARTool = esriARToolMapZoomIn);void CAOExStep1View:OnUpdateMapZoomout(CCmdUI* pCmdUI)pCmdUI-SetCheck(m_ARTool = esriARToolMapZoomOut);保存修改,編譯程序。運(yùn)行就可以對(duì)地圖進(jìn)行放大、縮小、平移、顯示全圖的操作了(如下圖)。三、本章小結(jié)上面我們添加了地圖漫游的功能,并使地圖窗口隨框架窗口一起縮放。你可能發(fā)現(xiàn)我們的程序加載的地圖是在設(shè)置MapControl控件屬性時(shí)指定的。我們?cè)谙乱还?jié)中將實(shí)現(xiàn)從shp文件加載地圖,并實(shí)現(xiàn)圖層管理的一些功能。AO開發(fā)筆記(實(shí)戰(zhàn)篇)用VC+AO開發(fā)獨(dú)立的應(yīng)用程序(3)作者:Snoopy文章來(lái)源:中國(guó)3S網(wǎng)站()點(diǎn)擊數(shù):3221更新時(shí)間:2006-12-11摘要:你可能發(fā)現(xiàn)我們的程序加載的地圖是在設(shè)置MapControl控件屬性時(shí)指定的,在本節(jié)我們將實(shí)現(xiàn)如下新功能:1從shp文件加載圖層數(shù)據(jù)。2實(shí)現(xiàn)圖層管理的一些功能,如:圖層顯示/隱藏、圖層疊加順序調(diào)整、圖層的刪除。一、添加從shp文件加載圖層數(shù)據(jù)功能首先去掉MapContrl屬性里面默認(rèn)打開的地圖文檔或默認(rèn)加載的圖層,然后在工具欄添加新的按鈕,按鈕ID和提示文本如下:ID_ADD_LAYER_FRMSHP從shp文件加載圖層n從shp文件加載圖層接下來(lái)為類添加該按鈕的響應(yīng)函數(shù),并在函數(shù)中添加如下代碼(紅色部分):/從shp文件加載數(shù)據(jù)void CAOExStep1View:OnAddLayerFrmshp()/顯示選擇shp文件的對(duì)話框const TCHAR * szFilters = _T(shp File (*.shp)|*.shp|);CFileDialogmDlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY, szFilters);if (mDlg.DoModal() = IDCANCEL) return;/獲取文件路徑和名稱CString sztemp = mDlg.GetPathName();CString szFileName,szPath;szFileName = sztemp.Left(sztemp.ReverseFind()+1);szPath = sztemp.Mid(sztemp.ReverseFind()+1);/添加新圖層m_ipMapControl-AddShapeFile(CComBSTR(szFileName),CComBSTR(szPath);保存修改編譯,運(yùn)行點(diǎn)擊加載圖層工具欄按鈕就可以看到如下畫面:二、添加圖層管理功能首先在工具欄添加新的按鈕,按鈕ID和提示文本如下:ID_LAYER_MANAGE圖層管理n圖層管理然后我們添加一個(gè)圖層管理的對(duì)話框,在里面添加一個(gè)Listctrl三個(gè)按鈕,如下圖:幾個(gè)控件的ID分別為:IDC_LIST_LAYERIDC_BTN_UPIDC_BTN_DOWNIDC_BTN_DEL其中IDC_LIST_LAYER的樣式為Report。設(shè)置完畢,為該對(duì)話框添加類ClayerManageDlg,并且為IDC_LIST_LAYER添加一個(gè)控件變量CListCtrlm_listLayer,再添加幾個(gè)按鈕的響應(yīng)函數(shù),以及對(duì)話框初始化函數(shù)(OnInitDialog())。然后再添加如下函數(shù)和成員變量:voidRefreshMap();/刷新地圖BOOLGetAllLayer();/獲取所有圖層IMapControl3Ptrm_ipMapControl;/地圖控件CImageListm_ImageList;/ LIST圖形列表m_ipMapControl用來(lái)保存?zhèn)鬟f過來(lái)的MapControl指針,我們更改一下默認(rèn)的構(gòu)造函數(shù),在對(duì)話框構(gòu)造函數(shù)里面初始化改變量,代碼如下:/ LayerManageDlg.h : header file下面為頭文件中函數(shù)內(nèi)容CLayerManageDlg(IMapControl3PtripMapControl,CWnd*pParent=NULL/ LayerManageDlg.cpp : implementation file下面為cpp文件中函數(shù)內(nèi)容CLayerManageDlg:CLayerManageDlg(IMapControl3PtripMapControl,CWnd*pParent/*=NULL*/):CDialog(CLayerManageDlg:IDD,pParent)m_ipMapControl=ipMapControl;在對(duì)話框初始化函數(shù)里面我們需要加入如下代碼以初始化ListCtrl并獲取圖層:/新建ImageList,然后從ICON里面加載m_ImageList.Create(16, 16,ILC_COLOR32, 0, 1);m_ImageList.Add(AfxGetApp()-LoadIcon(IDI_ICON_LAYER);/設(shè)置LIST圖像列表,樣式,添加Columnm_listLayer.SetImageList(&m_ImageList,LVSIL_SMALL);m_listLayer.SetExtendedStyle(LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT);m_listLayer.InsertColumn(0,圖層名稱,LVCFMT_LEFT,200);GetAllLayer();/獲取當(dāng)前地圖的圖層并添加到LIST中AO開發(fā)筆記(實(shí)戰(zhàn)篇)用VC+AO開發(fā)獨(dú)立的應(yīng)用程序(3)續(xù)1作者:Snoopy文章來(lái)源:中國(guó)3S網(wǎng)站()點(diǎn)擊數(shù):2872更新時(shí)間:2006-12-11摘要:另外幾個(gè)函數(shù)代碼如下:/獲取所有圖層BOOLCLayerManageDlg:GetAllLayer()if(m_ipMapControl=NULL)returnFALSE;longlLayerCount=0;m_ipMapControl-get_LayerCount(&lLayerCount);CStringszLayersName;intiIndex=0;for(longi=0;iget_Layer(i,&ipLayer);if(ipLayer)BSTRbstrLayerName;ipLayer-get_Name(&bstrLayerName);VARIANT_BOOLbVisible=FALSE;ipLayer-get_Visible(&bVisible);szLayersName=bstrLayerName;:SysFreeString(bstrLayerName);m_listLayer.InsertItem(iIndex,szLayersName,0);m_listLayer.SetCheck(iIndex,bVisible);iIndex+;returnTRUE;/刷新地圖顯示voidCLayerManageDlg:RefreshMap()IActiveViewPtripActiveView;HRESULThr=m_ipMapControl-get_ActiveView(&ipActiveView);if(ipActiveView!=NULL)ipActiveView-Refresh();/上移圖層voidCLayerManageDlg:OnBtnUp()intiCurSel=m_listLayer.GetSelectionMark();if(iCurSelget_Map(&ipMap);if(FAILED(hr)return;ILayerPtripLayer;hr=ipMap-get_Layer(iCurSel,&ipLayer);if(FAILED(hr)return;hr=ipMap-MoveLayer(ipLayer,iCurSel-1);if(FAILED(hr)return;RefreshMap();CStringszLayerName=m_listLayer.GetItemText(iCurSel,0);BOOLbVisiable=m_listLayer.GetCheck(iCurSel);m_listLayer.DeleteItem(iCurSel);intiNewItem=m_listLayer.InsertItem(iCurSel-1,szLayerName,0);m_listLayer.SetCheck(iNewItem,bVisiable);/下移圖層voidCLayerManageDlg:OnBtnDown()intiCurSel=m_listLayer.GetSelectionMark();if(iCurSel=m_listLayer.GetItemCount()-1)return;IMapPtripMap;HRESULThr=m_ipMapControl-get_Map(&ipMap);if(FAILED(hr)return;ILayerPtripLayer;hr=ipMap-get_Layer(iCurSel,&ipLayer);if(FAILED(hr)return;hr=ipMap-MoveLayer(ipLayer,iCurSel+1);if(FAILED(hr)return;RefreshMap();CStringszLayerName=m_listLayer.GetItemText(iCurSel,0);BOOLbVisiable=m_listLayer.GetCheck(iCurSel);m_listLayer.DeleteItem(iCurSel);intiNewItem=m_listLayer.InsertItem(iCurSel+1,szLayerName,0);m_listLayer.SetCheck(iNewItem,bVisiable);AO開發(fā)筆記(實(shí)戰(zhàn)篇)用VC+AO開發(fā)獨(dú)立的應(yīng)用程序(3)續(xù)2作者:Snoopy文章來(lái)源:中國(guó)3S網(wǎng)站()點(diǎn)擊數(shù):3544更新時(shí)間:2006-12-11摘要:/刪除圖層voidCLayerManageDlg:OnBtnDel()intiCurSel=m_listLayer.GetSelectionMark();if(iCurSelget_Map(&ipMap);if(FAILED(hr)return;/獲取要?jiǎng)h除的圖層ILayerPtripLayer;hr=ipMap-get_Layer(iCurSel,&ipLayer);if(FAILED(hr)return;ipMap-DeleteLayer(ipLayer);if(FAILED(hr)return;m_listLayer.DeleteItem(iCurSel);保存、編譯、運(yùn)行,先點(diǎn)擊工具欄添加圖層數(shù)據(jù),然后點(diǎn)擊圖層管理按鈕,出現(xiàn)圖層管理的對(duì)話框,在ListCtrl中選擇一行,點(diǎn)擊按鈕:上移、下移、刪除,可以看到相應(yīng)的效果(見下圖):在圖層列表中每行記錄前面的復(fù)選框是用來(lái)控制圖層是否可見的,因?yàn)樵贚istCtrl的事件函數(shù)里面沒有專門處理復(fù)選框的點(diǎn)擊消息的函數(shù),所以我們從ClistCtrl派生一個(gè)新的類專門處理它。在Classview頁(yè)右擊項(xiàng)目名稱在出現(xiàn)的菜單里面選擇New Class,添加一個(gè)新類ClistCtrlEx,類型選擇MFC Class基類選擇ClistCtrl,如下圖:在生成的新類中添加一個(gè)自定義消息,當(dāng)用戶點(diǎn)擊復(fù)選框時(shí)向父窗口發(fā)送此消息:#
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030全球擋風(fēng)玻璃用聚氨酯膠粘劑行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年中國(guó)鈦鐵包芯線行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025智能手機(jī)散熱器件行業(yè)市場(chǎng)分析報(bào)告
- 玻璃鋼泵項(xiàng)目立項(xiàng)備案申請(qǐng)報(bào)告
- 中國(guó)微特電機(jī)行業(yè)發(fā)展前景預(yù)測(cè)及投資策略研究報(bào)告
- 2025年中國(guó)包裝機(jī)械行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2024年中國(guó)黑龍江省農(nóng)藥行業(yè)調(diào)查研究報(bào)告
- 安全事故應(yīng)急救援預(yù)案內(nèi)容
- 2025年中國(guó)平板電視行業(yè)市場(chǎng)深度分析及發(fā)展前景預(yù)測(cè)報(bào)告
- 電腦排針項(xiàng)目投資可行性研究分析報(bào)告(2024-2030版)
- 赤峰市翁牛特旗招聘社區(qū)工作者筆試真題2024
- 電商客服人員管理制度
- 山西省2025年中考語(yǔ)文真題(含答案)
- 航空航天技術(shù)知識(shí)要點(diǎn)梳理
- 滬教七年級(jí) (下) Unit 7 Role models of our time 重點(diǎn)復(fù)習(xí)課件
- 采購(gòu)原材料管理制度
- 2025至2030中國(guó)服務(wù)器行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展趨勢(shì)報(bào)告
- 1p120新產(chǎn)品制造可行性報(bào)告
- 工程結(jié)算審核定案表(模板)
- 開工前安全安全生產(chǎn)條件審查表
- JJG 49-2013 彈性元件式精密壓力表和真空表-(高清現(xiàn)行)
評(píng)論
0/150
提交評(píng)論