60楼#
发布于:2004-07-13 11:54
<P><FONT color=#386490><b>四、系统实现的部分程序清单
</b>// CGisView_Demo1View.cpp : implementation of the CCGisView_Demo1View class // #include "stdafx.h" #include "CGisView_Demo1.h" #include "ddeobj.h" #include "CGisView_Demo1Doc.h" #include "CGisView_Demo1View.h" #include "dialog2.h" #include "Win_area.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif</FONT> </P><P><FONT color=#386490>#include "childfrm.h"</FONT></P><P><FONT color=#386490>///////////////////////////////////////////////////////////////////////////// // CCGisView_Demo1View</FONT></P><P><FONT color=#386490>IMPLEMENT_DYNCREATE(CCGisView_Demo1View, CGisView)</FONT></P><P><FONT color=#386490>BEGIN_MESSAGE_MAP(CCGisView_Demo1View, CGisView) …… END_MESSAGE_MAP()</FONT></P><P><FONT color=#386490>///////////////////////////////////////////////////////////////////////////// // CCGisView_Demo1View construction/destruction extern HDDEDATA CALLBACK EXPORT DdeCallback(UINT iType,UINT iFmt,HCONV hCconv, HSZ hsz1, HSZ hsz2,HDDEDATA hData,DWORD dwData1,DWORD dwData2);</FONT></P><P><FONT color=#386490>CDDEObj theDDE; HWND hwnd; char * Dwarfs[]={"Grumpy","Sleepy","Sneezy","Bashful","Dopey","Happy","Doc"};</FONT></P><P><FONT color=#386490>char *Reindeer[]={"Dasher","Dancer","Prancer","Vixen","Comet","Cupid","Donner","Blitzen"};</FONT></P><P><FONT color=#386490>CCGisView_Demo1View::CCGisView_Demo1View() {bmp1.LoadBitmap(IDB_BITMAP1); LButtonPos=(0,0); gotoanywhere_flage=false; querybore_flage=false; flashtype=-1; connectToDbs=false; curview_area=-1; curview_type=-1; //DDE Initialize DdeInitialize(;(theDDE.idInst),DdeCallback,APPCLASS_STANDARD |CBF_FAIL_ADVISES | CBF_FAIL_EXECUTES |CBF_FAIL_POKES |CBF_SKIP_REGISTRATIONS | CBF_SKIP_UNREGISTRATIONS,0L); HSZ hszService; theDDE.AppName="MyDDEApp"; hszService=DdeCreateStringHandle(theDDE.idInst,theDDE.AppName,0); DdeNameService(theDDE.idInst,hszService,NULL,DNS_REGISTER); //DDE end }</FONT></P><P><FONT color=#386490>HDDEDATA CALLBACK EXPORT DdeCallback(UINT iType,UINT iFmt,HCONV hCconv, HSZ hsz1, HSZ hsz2,HDDEDATA hData,DWORD dwData1,DWORD dwData2) {//Topic=hsz1 Item=hsz2. char szBuffer[32]; switch(iType) { case XTYP_CONNECT: //GET the application name DdeQueryString((theDDE.fakeThis)->idInst,hsz2,szBuffer,sizeof(szBuffer),0); if((theDDE.fakeThis)->AppName!=szBuffer) return false; DdeQueryString((theDDE.fakeThis)->idInst,hsz1, szBuffer,sizeof(szBuffer),0); if(strcmp(szBuffer,"Dwarfs") ;; strcmp(szBuffer,"Reindeer")) return false; return (HDDEDATA)TRUE; break; case XTYP_REQUEST: DdeQueryString((theDDE.fakeThis)->idInst,hsz1, szBuffer,sizeof(szBuffer),0); if(strcmp(szBuffer,"Dwarfs")==0) { //get the item name DdeQueryString((theDDE.fakeThis)->idInst,hsz2, szBuffer,sizeof(szBuffer),0); int dwarfcode=atoi(szBuffer); // SendMessage(hwnd,WM_COMMAND,ID_TRY2,0L); if((dwarfcode<0) || (dwarfcode>6)) return false; return DdeCreateDataHandle((theDDE.fakeThis)->idInst, (LPBYTE)Dwarfs[dwarfcode], strlen(Dwarfs[dwarfcode])+1, 0,hsz2,CF_TEXT,0); } } return NULL; }</FONT></P><P><FONT color=#386490>CCGisView_Demo1View::~CCGisView_Demo1View() {}</FONT></P><P><FONT color=#386490>BOOL CCGisView_Demo1View::PreCreateWindow(CREATESTRUCT; cs) { // TOD Modify the Window class or styles here by modifying // the CREATESTRUCT cs // ptai=NULL;//选择显示区 return CGisView::PreCreateWindow(cs); }</FONT></P><P><FONT color=#386490>///////////////////////////////////////////////////////////////////////////// // CCGisView_Demo1View drawing</FONT></P><P><FONT color=#386490>void CCGisView_Demo1View::OnDraw(CDC* pDC) { CCGisView_Demo1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); hwnd=m_hWnd; // TOD add draw code for native data here CGisView::OnDraw(pDC); }</FONT></P><P><FONT color=#386490>void CCGisView_Demo1View::_OwnerDraw(MyDC myDC) { short ti,i,j,k; short *pLst; short type; BOOL flage=false; CCGisView_Demo1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); _GetAreaList(;pLst); if(pLst==NULL) return; for(ti=0;ti<4;ti++) //循环4次,依次显示 区,线,点,网 { switch(ti) { case 0: type=REG; break; case 1: type=NET; break; case 2: type=LIN; break; case 3: type=PNT; break; } if(pDoc->ptai==NULL) //选择显示区) { for(i=1;i<=pLst[0];i++) { if(type!=_GetAreaType(pLst)) continue; switch(type) { case PNT: _DispPntArea(myDC,pLst); break; case LIN: _DispLinArea(myDC,pLst); break; case REG: _DispRegArea(myDC,pLst); break; case NET: _DispLinArea(myDC,pLst); break; default: break; } } } else for(i=1;i<=pDoc->ptai[0];i++) { if(type!=_GetAreaType(pDoc->ptai)) continue; for(k=1;k<=pLst[0];k++) { if(pLst[k]==pDoc->ptai) {flage=true; break;} flage=false; } if(flage) switch(type) { case PNT: _DispPntArea(myDC,pDoc->ptai); break; case LIN: _DispLinArea(myDC,pDoc->ptai); break; case REG: _DispRegArea(myDC,pDoc->ptai); break; case NET: _DispLinArea(myDC,pDoc->ptai); break; default: break; } } }</FONT></P><P><FONT color=#386490>} </FONT></P> |
|
|
上一页
下一页