免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 2676|回复: 3
收起左侧

二次开发-标尺功能实现方法:

[复制链接]

1986

主题

10万

铜板

98

好友

技术员

Network change life, change t

积分
17879

斑竹勋章地信元老

QQ
发表于 2009-12-7 13:41 | 显示全部楼层 |阅读模式
标尺功能实现方法:
*调用Tool_opr.dll动态库。
*代码调用:
1.在Frame窗口类的头文件中定义:
public:
CRuleSplitter m_Splitter;
2、在Frame 的
::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
m_Splitter.Initalize(this,RUNTIME_CLASS(CTestFrameView),lpcs,pContext);
//若开发者的程序为切分视结构,则调用:
m_Splitter.Initalize(&m_wndSplitter,RUNTIME_CLASS(CTestFrameView),lpcs,pContext,m_wndSplitter.IdFromRowCol(0, 1));
}
3、在view的ondraw中调用
int  *ipscreenPnts;
double  *dpGridpnts;
int  iNum,i;
D_DOT    ddTmp;
CPoint   ptTmp;

CRuleSplitter *par =(CRuleSplitter *)GetParent();
if(par->IsKindOf( RUNTIME_CLASS( CRuleSplitter ) ))
   {
  if(par->GetSafeHwnd())
  {
   D_RECT drc;
   RECT   rc;
   _GetWinDispRect(&drc);
   GetClientRect(&rc);
   ClientToScreen(&rc);
   par->SetPicScreenMetrics(rc);
   par->SetRange(drc.xmax,drc.xmin,drc.ymax,drc.ymin);
   if (par->AdjustXGridArray(&ipscreenPnts,&dpGridpnts,&iNum))
   {
    for(i=0;i<iNum;i++)
    {
     ddTmp.x = dpGridpnts;
     ddTmp.y = DEF_PIXEL;
     _LpToWp(&ddTmp,&ptTmp);
     ClientToScreen(&ptTmp);
     ipscreenPnts = ptTmp.x;
    }
   }
   if (par->AdjustYGridArray(&ipscreenPnts,&dpGridpnts,&iNum))
   {
   
    for(i=0;i<iNum;i++)
    {
     ddTmp.x = DEF_PIXEL;
     ddTmp.y = dpGridpnts;
     _LpToWp(&ddTmp,&ptTmp);
     ClientToScreen(&ptTmp);
     ipscreenPnts = ptTmp.y;
    }
   }
   par->UpdateRuler();
  }
}

4、在PreTranslateMessage(MSG* pMsg)中调用
BOOL CTestFrameView:reTranslateMessage(MSG* pMsg)
{
CRuleSplitter *par =(CRuleSplitter *)GetParent();
if(par->IsKindOf( RUNTIME_CLASS( CRuleSplitter ) ))
{
  if(par->GetSafeHwnd())
  {
   par->RelayMsg(pMsg);
  }
}
return CGisEditView::PreTranslateMessage(pMsg);
}
轻轻的我来签到了,想带走一堆铜板...

0

主题

5376

铜板

1

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2348
QQ
发表于 2022-3-20 10:53 | 显示全部楼层
谢谢提供分享
回复 支持 反对

使用道具 举报

发表于 2025-4-15 18:28 | 显示全部楼层
持续学习 持续进步
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表