亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? comboboxsymbol.cpp

?? 一個英國人寫的GIS查看/編輯工具。支持標準的shapefile地圖文件格式和coverage地圖文件格式。同時可以編輯相應的dbf文件。
?? CPP
字號:
//////////////////////////////////////////////////////
//
// NRDB Pro - Spatial database and mapping application
//
// Copyright (c) 1989-2004 Richard D. Alexander
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//
// NRDB Pro is part of the Natural Resources Database Project 
// 
// Homepage: http://www.nrdb.co.uk/
// Users' Forum: http://nrdb.mypalawan.info/
// 

#include "stdafx.h"
#include <io.h>

#include "nrdb.h"
#include "ComboBoxSymbol.h"
#include "comboboxpattern.h"
#include "viewmap.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////

#define MMPERINCH 25.4
#define MAXSIZECUSTOM 10
#define DEFAULTSIZECUSTOM 5
#define DEFAULTSIZESYSTEM 3

/////////////////////////////////////////////////////////////////////////////

CCustomSymArray CComboBoxSymbol::m_aCustomSym;

/////////////////////////////////////////////////////////////////////////////
// CComboBoxSymbol

CComboBoxSymbol::CComboBoxSymbol()
{
}

CComboBoxSymbol::~CComboBoxSymbol()
{   
}

CMapStyle CComboBoxSymbol::GetStyle(int index)
{
   CMapStyle style;
   style.m_nSymbol = GetItemData(index);
   return style;
}


/////////////////////////////////////////////////////////////////////////////


BEGIN_MESSAGE_MAP(CComboBoxSymbol, CComboBox)
	//{{AFX_MSG_MAP(CComboBoxSymbol)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()



/////////////////////////////////////////////////////////////////////////////
// CComboBoxSymbol message handlers

void CComboBoxSymbol::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
   CDC* pDC = CDC::FromHandle(lpDIS->hDC);              

   CMapStyle mapstyle;

  // Set viewing size

   mapstyle.m_dSymSize = DEFAULTSIZESYSTEM;
   
  // Output the symbol
    
    if ( lpDIS->itemAction & ODA_DRAWENTIRE ||
         lpDIS->itemAction & ODA_SELECT)
    {  
       // Determine style for item data

       if (GetCount())
       {    
          mapstyle.m_nSymbol = lpDIS->itemData;
       };

        // Determine colours

       mapstyle.m_crLine = GetSysColor(COLOR_WINDOWTEXT);      
       if (lpDIS->itemState & ODS_SELECTED) mapstyle.m_crLine = GetSysColor(COLOR_HIGHLIGHTTEXT);

       COLORREF crBack = GetSysColor(COLOR_WINDOW);   
       if (lpDIS->itemState & ODS_SELECTED) crBack = GetSysColor(COLOR_HIGHLIGHT);                                                  

       CBrush brBack(crBack);
       pDC->FillRect(&lpDIS->rcItem, &brBack);

       CPen pen(PS_SOLID, 1, mapstyle.m_crLine);
       CPen* pPenOld = pDC->SelectObject(&pen);

      // Fill with colour

	   long lX = (lpDIS->rcItem.right + lpDIS->rcItem.left)/2;
	   long lY = (lpDIS->rcItem.top + lpDIS->rcItem.bottom)/2; 
        
      if (mapstyle.m_nSymbol == none)
      {
         pDC->SetBkMode(TRANSPARENT);
         pDC->SetTextColor(mapstyle.m_crLine);
         pDC->DrawText(BDString(IDS_NONE), &lpDIS->rcItem, DT_CENTER);
      }       
      else
      {
         // Increase preview size for custom symbols

         if (LOWORD(mapstyle.m_nSymbol) == user)
         {
            mapstyle.m_dSymSize = DEFAULTSIZECUSTOM;
         }

	      DrawSymbol(pDC, lX, lY, mapstyle);       
      };

      pDC->SelectObject(pPenOld);
    }    
}

///////////////////////////////////////////////////////////////////////////////

void CComboBoxSymbol::MeasureItem(LPMEASUREITEMSTRUCT lpMIS)
{      
   double dSize = (double)HIWORD(lpMIS->itemData)/10;      

   CSize sz = GetSymSize(GetDC(), dSize);   
   lpMIS ->itemHeight = sz.cy*2;
}


///////////////////////////////////////////////////////////////////////////////

void CComboBoxSymbol::Initialise(const CMapStyle& mapstylesel)
{
// Initialise

	ResetContent();

   // Load custom symbols for the registry

   if (!m_aCustomSym.m_bInit)
   {
       InitCustomSym();
   }

   // Add null symbol
   
   int index = AddString("");         
   SetItemData(index, none);
   SetCurSel(index);

   // Add system symbols

   for (int iType = triangle; iType <= times; iType++)
   {            
      // 'system' is zero so will match existing values

      int index = AddString("");                  
      SetItemData(index, MAKELONG(iType, 0));

      if (mapstylesel.m_nSymbol == iType) SetCurSel(index);      
   }            

   // Add custom symbols

   for (int i = 0; i < m_aCustomSym.GetSize(); i++)
   {
      int index = AddString("");
      DWORD dw = MAKELONG(user, m_aCustomSym[i].m_nId);
      SetItemData(index, dw);

      if ((DWORD)mapstylesel.m_nSymbol == dw) SetCurSel(index);
   }
   
}

///////////////////////////////////////////////////////////////////////////////

void CComboBoxSymbol::InitCustomSym()
{
   m_aCustomSym.RemoveAll();

   // Load the custom symbols from the database

   CBDSymbol symbol;

   BOOL bFound = BDSymbol(BDHandle(), &symbol, BDGETINIT);
   while (bFound)
   {
      CCustomSymbol customsym;

      customsym.m_nId = symbol.m_lId;
      int index = m_aCustomSym.Add(customsym);

      // Initialise when on array as to image is not copied in the constructor of
      // CCustomSymbol

      if (!m_aCustomSym[index].m_imagefile.Initialise(symbol.m_symbol, FALSE))
      {
          m_aCustomSym.RemoveAt(index);   
      }
      

      bFound = BDGetNext(BDHandle());
   }
   BDEnd(BDHandle());
}

///////////////////////////////////////////////////////////////////////////////

void CComboBoxSymbol::DrawSymbol(CDC* pDC, double lX, double lY, const CMapStyle& mapstyle)
{   
	int     nPts;
   POINT   pt[6];
   int  cx, cy, diam;

   // Select pen

   CPen pen(mapstyle.m_nLineStyle, mapstyle.m_nLineWidth, mapstyle.m_crLine);
   CPen* pPenOld = pDC->SelectObject(&pen);

   CBrush brush;
   CComboBoxPattern::CreateBrush(brush, mapstyle.m_nPattern, mapstyle.m_nHatch, mapstyle.m_crFill);   

	// Select brush
   
   CBrush* poldbrush = NULL;
	poldbrush = pDC->SelectObject( &brush );   
    
	// Determine size of symbol to be drawn

	CSize size = GetSymSize(pDC, mapstyle.m_dSymSize);
       
    cx = (long)lX;
    cy = (long)lY;
    diam = (int)(size.cy/2) +2;
      
	pDC->SetPolyFillMode( WINDING );
   switch (LOWORD(mapstyle.m_nSymbol)) 
	{
	   case triangle:                        
        nPts = 3;
		  pt[0].x = cx - diam;  pt[0].y = cy + diam;
		  pt[1].x = cx + diam;  pt[1].y = cy + diam;
		  pt[2].x = cx ;        pt[2].y = cy - diam;		  
		  pDC->Polygon( pt, nPts );
		  break;        

      case inversetriangle:
        nPts = 3;
		  pt[0].x = cx - diam;  pt[0].y = cy - diam;
		  pt[1].x = cx + diam;  pt[1].y = cy - diam;
		  pt[2].x = cx ;        pt[2].y = cy + diam;		  
		  pDC->Polygon( pt, nPts );
		  break;   
    
	   case square:
		  nPts = 4;
		  pt[0].x = cx - diam;  pt[0].y = cy - diam;
		  pt[1].x = cx + diam;  pt[1].y = cy - diam;
		  pt[2].x = cx + diam;  pt[2].y = cy + diam;
		  pt[3].x = cx - diam;  pt[3].y = cy + diam;		  
		  pDC->Polygon( pt, nPts );
		  break;

	   case circle:                    
		  pt[0].x = cx ;  pt[0].y = cy;
		  pDC->Ellipse(pt[0].x - diam, pt[0].y-diam, pt[0].x+diam, pt[0].y+diam);
		  break;

	   case diamond:
		  nPts = 4;
		  pt[0].x = cx;        pt[0].y = cy - diam;
		  pt[1].x = cx + diam;  pt[1].y = cy;
		  pt[2].x = cx;        pt[2].y = cy + diam;
		  pt[3].x = cx - diam;  pt[3].y = cy;		  
		  pDC->Polygon( pt, nPts );
		  break;

      case arrow:
         nPts = 5;
         pt[0].x = cx+diam*2; pt[0].y = cy+diam*2;
         pt[1].x = cx; pt[1].y = cy;
         pt[2].x = cx+diam;      pt[2].y = cy;
         pt[3].x = cx; pt[3].y = cy+diam;
         pt[4].x = cx; pt[4].y = cy;         
	      pDC->Polyline(pt, nPts );
         break;

      case cross:
         nPts = 6;
         pt[0].x = cx; pt[0].y = cy;
         pt[1].x = cx-diam; pt[1].y = cy;
         pt[2].x = cx+diam; pt[2].y = cy;
         pt[3].x = cx; pt[3].y = cy;
         pt[4].x = cx; pt[4].y = cy-diam;
         pt[5].x = cx; pt[5].y = cy+diam;
         pDC->Polyline(pt, nPts );
         break;    

      case times:
         nPts = 5;
         pt[0].x = cx-diam; pt[0].y = cy-diam;
         pt[1].x = cx+diam; pt[1].y = cy+diam;
         pt[2].x = cx; pt[2].y = cy;
         pt[3].x = cx-diam; pt[3].y = cy+diam;
         pt[4].x = cx+diam; pt[4].y = cy-diam;         
         pDC->Polyline(pt, nPts );
         break;    

      case user:         
         {
            long lId = HIWORD(mapstyle.m_nSymbol);
            CRect rect = CRect(cx-diam, cy-diam, cx+diam, cy+diam);

            for (int i = 0; i < m_aCustomSym.GetSize(); i++)
            {
               if (m_aCustomSym[i].m_nId == lId)
               {
                  m_aCustomSym[i].m_imagefile.OnDraw(pDC, rect);
                  break;
               };
            };

            break;
         };
    };   
   
 // Tidy up

	if( poldbrush != NULL)
	  pDC->SelectObject( poldbrush );	

   if (pPenOld != NULL) pDC->SelectObject(pPenOld);

}

/////////////////////////////////////////////////////////////////////////////

CSize CComboBoxSymbol::GetSymSize(CDC* pDC, double dSize)
{
   CSize size;
   
   size.cx = (int)(dSize * pDC->GetDeviceCaps(LOGPIXELSX) / MMPERINCH /2); 
   size.cy = (int)(dSize * pDC->GetDeviceCaps(LOGPIXELSY) / MMPERINCH /2); 
  
   return size;
}

///////////////////////////////////////////////////////////////////////////////

void CComboBoxSymbol::OnDestroy() 
{
	CComboBox::OnDestroy();
	
}

///////////////////////////////////////////////////////////////////////////////

BOOL CComboBoxSymbol::AddSymbol()
{
   BOOL bOK = FALSE;

   // Select the file

   CString sType = BDString(IDS_PNGFILE) + "|*.png|";
   sType += BDString(IDS_JPGFILE) + "|*.jpg|";

   CFileDialog dlg(TRUE,"png",NULL,OFN_FILEMUSTEXIST, sType += "|");

   if (dlg.DoModal() == IDOK)
   {
      // Load the image file


      CImageFile imagefile;
      if (imagefile.Open(dlg.GetPathName()))
      {
         // Save it to the database

         CBDSymbol symbol;         

         BDNextId(BDHandle(), BDSYMBOL, 0, &symbol.m_lId);
         if (imagefile.AsLongBinary(symbol.m_symbol))
         {
            if (BDSymbol(BDHandle(), &symbol, BDADD))
            {
               bOK = TRUE;
            }
            BDEnd(BDHandle());

         }
      };

   }
   return bOK;
}

///////////////////////////////////////////////////////////////////////////////
//
// Deletes the currently selected symbol
//

BOOL CComboBoxSymbol::DeleteSymbol()
{
   int index = GetCurSel();
   if (index != CB_ERR)
   {
      DWORD dw = GetItemData(index);

      if (LOWORD(dw) == user)
      {
          CBDSymbol symbol;         
          symbol.m_lId = HIWORD(dw);
          if (BDSymbol(BDHandle(), &symbol, BDDELETE))
          {
             return TRUE;
          }
      }
   }
   return FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文天堂在线一区| 精品无码三级在线观看视频| 免费看日韩a级影片| 国产成人精品综合在线观看| 在线观看区一区二| 国产精品久久影院| 久久精品国内一区二区三区| 在线看一区二区| 久久精品视频免费观看| 日本中文字幕一区| 欧美自拍丝袜亚洲| 欧美国产一区视频在线观看| 蜜臀av性久久久久蜜臀aⅴ| 91国产免费看| 综合久久久久久| 国v精品久久久网| 精品捆绑美女sm三区| 天堂av在线一区| 在线观看欧美精品| 亚洲色图制服丝袜| 97国产一区二区| 国产亚洲精品资源在线26u| 九九视频精品免费| 日韩视频一区在线观看| 天堂va蜜桃一区二区三区| 欧美性色黄大片手机版| 一区二区三区在线播| 成人黄色在线看| 中文字幕高清不卡| 成人污污视频在线观看| 中文字幕+乱码+中文字幕一区| 国产老妇另类xxxxx| 精品久久久久久久久久久久包黑料| 石原莉奈在线亚洲三区| 欧美人妇做爰xxxⅹ性高电影 | 精品少妇一区二区| 日本欧美久久久久免费播放网| 欧美日韩国产免费一区二区 | 青草av.久久免费一区| 欧美精品日韩综合在线| 日韩专区中文字幕一区二区| 欧美一卡二卡在线观看| 捆绑调教一区二区三区| 久久色中文字幕| 国产91在线|亚洲| 最新欧美精品一区二区三区| 色偷偷久久一区二区三区| 亚洲高清免费视频| 日韩欧美中文字幕制服| 国产一区二区福利| 欧美国产乱子伦| 91福利区一区二区三区| 日产欧产美韩系列久久99| 日韩免费在线观看| 成人影视亚洲图片在线| 一二三四区精品视频| 911国产精品| 国产成人午夜精品影院观看视频| 亚洲人成小说网站色在线| 欧美人牲a欧美精品| 狠狠色丁香久久婷婷综合丁香| 欧美国产精品一区二区| 欧美三级在线播放| 国产精品羞羞答答xxdd| 一区二区三区鲁丝不卡| 日韩一级片在线观看| 不卡的av电影| 精品一区二区三区免费毛片爱| 久久久久久麻豆| 日本黄色一区二区| 极品少妇xxxx精品少妇| 一区二区三区在线不卡| 久久久亚洲精品一区二区三区| 色综合天天综合色综合av| 奇米777欧美一区二区| 国产精品动漫网站| 精品区一区二区| 91丨porny丨国产| 国产在线一区二区| 午夜精品久久久久久| 国产欧美一区二区精品性色超碰| 欧美日韩国产天堂| 成人av网站在线观看| 老司机免费视频一区二区三区| 亚洲日韩欧美一区二区在线| 337p日本欧洲亚洲大胆色噜噜| 色国产精品一区在线观看| 国产精品中文欧美| 日韩国产在线观看| 亚洲免费在线视频| 国产精品素人一区二区| 精品国产电影一区二区| 欧美日韩和欧美的一区二区| 99vv1com这只有精品| 国产成人综合在线观看| 九一九一国产精品| 美女被吸乳得到大胸91| 午夜电影一区二区三区| 亚洲午夜久久久久久久久电影网| 国产精品久久福利| 欧美激情一二三区| 久久伊99综合婷婷久久伊| 在线不卡的av| 在线电影欧美成精品| 在线一区二区视频| 91在线精品一区二区| 成人黄色国产精品网站大全在线免费观看 | 日韩三级视频在线观看| 欧美日韩免费不卡视频一区二区三区| 99久久99久久精品免费观看| 大尺度一区二区| 国产精品一级黄| 国产成人亚洲综合a∨猫咪 | 午夜精品爽啪视频| 美女视频免费一区| 视频一区二区不卡| 日韩成人午夜电影| 丝袜美腿亚洲一区| 蜜桃一区二区三区在线观看| 日本欧美韩国一区三区| 美女看a上一区| 六月丁香综合在线视频| 韩国三级电影一区二区| 国产精品一区二区不卡| 成人精品视频网站| 色综合久久久久久久久| 欧美色图12p| 日韩一级大片在线观看| 26uuu色噜噜精品一区二区| 国产情人综合久久777777| 亚洲国产精品t66y| 亚洲久本草在线中文字幕| 一区二区成人在线视频| 日韩在线a电影| 国产精品亚洲综合一区在线观看| 成人黄色av电影| 欧美日韩在线一区二区| 日韩欧美高清dvd碟片| 国产区在线观看成人精品 | 三级欧美在线一区| 国产在线精品免费| 成人免费av在线| 欧美精品日韩一本| 久久嫩草精品久久久精品| 综合久久久久久久| 日日夜夜免费精品视频| 国产精品1024| 在线免费精品视频| 精品1区2区在线观看| 亚洲精品日日夜夜| 久久国产综合精品| 一本在线高清不卡dvd| 欧美一区二区在线免费观看| 国产精品青草综合久久久久99| 亚洲一级电影视频| 国产91精品精华液一区二区三区| 在线看一区二区| 久久网这里都是精品| 亚洲图片欧美色图| 成人综合在线视频| 欧美一级生活片| 成人免费在线视频| 美美哒免费高清在线观看视频一区二区| 粉嫩在线一区二区三区视频| 678五月天丁香亚洲综合网| 一区二区三国产精华液| 激情偷乱视频一区二区三区| 色婷婷国产精品| 中文字幕高清不卡| 老汉av免费一区二区三区 | 亚洲精品一线二线三线无人区| 成人免费一区二区三区在线观看| 免费看日韩a级影片| 欧美丝袜第三区| 一区免费观看视频| 国产成人亚洲综合色影视| 欧美一级精品大片| 午夜精品久久久久久久久久久| 95精品视频在线| 国产欧美va欧美不卡在线| 精品亚洲欧美一区| 5566中文字幕一区二区电影 | 国产精品理论在线观看| 久久99精品国产麻豆婷婷| 欧美日韩一区二区欧美激情| 亚洲色图欧美激情| 91在线码无精品| 国产精品天干天干在线综合| 国产黄色91视频| 久久久久久99精品| 国产一区二区三区综合| 精品三级在线观看| 国内久久精品视频| 欧美岛国在线观看| 奇米影视7777精品一区二区| 欧美一区欧美二区| 麻豆91精品视频| 欧美精品一区二区三区高清aⅴ| 久久av中文字幕片| xvideos.蜜桃一区二区|