gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
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>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
上一页 下一页
游客

返回顶部