📄 identifydlg.h
字号:
// CIdentifyDlg.h : Declaration of the CCIdentifyDlg
#pragma once
#include "resource.h" // main symbols
#include "Geobase.h"
#include <vector>
//#include "ShapeFile.h"
//#include "Raster.h"
// CCIdentifyDlg
using namespace GeoBase;
class CIdentifyDlg :
public CAxDialogImpl<CIdentifyDlg>
{
public:
CIdentifyDlg():m_isShow(FALSE)
{
}
~CIdentifyDlg()
{
}
enum { IDD = IDD_IDENTIFYDLG };
BEGIN_MSG_MAP(CIdentifyDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
//COMMAND_HANDLER(IDOK, BN_CLICKED, OnClickedOK)
COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnClickedCancel)
MESSAGE_HANDLER(WM_SIZE, OnSize)
CHAIN_MSG_MAP(CAxDialogImpl<CIdentifyDlg>)
END_MSG_MAP()
public:
BOOL get_isShow();
void set_isShow(BOOL show);
public:
void Show(const IPointPtr& cpPoint,const IActiveViewPtr& cpActiveView,BOOL bAdd);
void ShowHelp(const IActiveViewPtr& cpActiveView);
private:
void ShowPostion(const IPointPtr& cpPoint);
void ShowLayer(const IActiveViewPtr& cpActiveView);
void ShowList(const IFeaturePtr& cpFeature);
void ShowTree(const std::vector<IFeaturePtr>& cpFeatures,
const IFeaturePtr& cpCloestFeature,
BOOL bAdd);
void GetCloestFeature(const IActiveViewPtr& cpActiveView,
const IPointPtr& cpPoint,
std::vector<IFeaturePtr>& vecFeatures,
const IFeaturePtr& cpCloestFeature);
private:
//IPointPtr m_cpPoint;
//IActiveViewPtr m_cpActiveView;
BOOL m_isShow; //is dialog window's show
CWindow m_winComboBox;
CWindow m_winStatic;
CWindow m_winListCtl;
CWindow m_winTreeCtl;
// Handler prototypes:
// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
CAxDialogImpl<CIdentifyDlg>::OnInitDialog(uMsg, wParam, lParam, bHandled);
m_winStatic=GetDlgItem(IDC_POSTION);
m_winComboBox=GetDlgItem(IDC_COMBO1);
m_winListCtl=GetDlgItem(IDC_LIST1);
m_winTreeCtl=GetDlgItem(IDC_TREE1);
m_winListCtl.SetFocus();
//get position from register
HKEY hKey;
if(OpenReg(HKEY_CLASSES_ROOT,_T("ArcCommands.Identify\\Position"),KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY,&hKey))
{
int x,y,cx,cy;
if (ReadFromReg(hKey,_T("X"),x)&&ReadFromReg(hKey,_T("Y"),y)&&
ReadFromReg(hKey,_T("cx"),cx)&&ReadFromReg(hKey,_T("cy"),cy))
{
SetWindowPos(NULL,x,y,cx,cy,NULL);
}
CloseReg(hKey);
}
//set ListControl's Column
LVCOLUMN colField;
LVCOLUMN colValue;
colField.mask=LVCF_TEXT|LVCF_WIDTH;
colField.pszText=_T("属性");
colField.cx=50;
ListView_InsertColumn(m_winListCtl.m_hWnd,0,&colField);
colValue.mask=LVCF_TEXT|LVCF_WIDTH;
colField.pszText=_T("值");
colField.cx=200;
ListView_InsertColumn(m_winListCtl.m_hWnd,1,&colField);
return 1; // Let the system set the focus
}
/*LRESULT OnClickedOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
EndDialog(wID);
return 0;
}
*/
LRESULT OnClickedCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
//Save dialog's position to Register
HKEY hKey;
if(OpenReg(HKEY_CLASSES_ROOT,_T("ArcCommands.Identify\\Position"),KEY_ALL_ACCESS,&hKey))
{
int x,y,cx,cy;
RECT pos;
GetWindowRect(&pos);
x=pos.left;
y=pos.top;
cx=pos.right-pos.left;
cy=pos.bottom-pos.top;
WriteToReg(hKey,_T("X"),x);
WriteToReg(hKey,_T("Y"),y);
WriteToReg(hKey,_T("cx"),cx);
WriteToReg(hKey,_T("cy"),cy);
CloseReg(hKey);
}
DestroyWindow();
m_isShow=FALSE;
return 0;
}
public:
LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -