Files
geomative/GeomativeStudio/cpp/Views/navspt3ddlg.cpp
T
coco df489d5640 a
2026-07-03 16:05:30 +08:00

269 lines
7.0 KiB
C++

// navspt3ddlg.cpp : implementation file
//
#include "stdafx.h"
#include "geomative.h"
#include "navspt3ddlg.h"
#include "Constant.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern int g_iCurrListColIndex;
extern int g_iCurrListColOrder;
extern int CALLBACK ListStrCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lSortObject);
extern int g_UIOffset;
extern int g_iTransFileMode;
/////////////////////////////////////////////////////////////////////////////
// CNavSpt3DDlg dialog
CNavSpt3DDlg::CNavSpt3DDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNavSpt3DDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNavSpt3DDlg)
//}}AFX_DATA_INIT
}
void CNavSpt3DDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNavSpt3DDlg)
DDX_Control(pDX, IDC_LIST_EXEC_3D, m_3dList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNavSpt3DDlg, CDialog)
//{{AFX_MSG_MAP(CNavSpt3DDlg)
ON_WM_SHOWWINDOW()
ON_WM_SIZE()
ON_NOTIFY(NM_RCLICK, IDC_LIST_EXEC_3D, OnRclickListExec3d)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_EXEC_3D, OnItemchangedListExec3d)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST_EXEC_3D, OnColumnclickListExec3d)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNavSpt3DDlg message handlers
void CNavSpt3DDlg::Schedule()
{
int iSptRecIndex = (int)VAL_ZERO;
POSITION posSptRec;
DWORD dwItemHandle = (DWORD)VAL_ZERO;
DWORD dwImageState = (DWORD)VAL_ZERO;
DWORD dwTempStyle = (DWORD)VAL_ZERO;
posSptRec = m_3dList.GetFirstSelectedItemPosition();
iSptRecIndex = m_3dList.GetNextSelectedItem(posSptRec);
if (VAL_MINUS_ONE != iSptRecIndex)
{
dwItemHandle = m_3dList.GetItemData(iSptRecIndex);
dwImageState = m_3dList.GetItemState(iSptRecIndex, TVIS_STATEIMAGEMASK);
}
else
{
dwTempStyle = PZ_STYLE_SCON_3D;
dwTempStyle <<= HANDLE_OFFSET;
dwItemHandle |= dwTempStyle;
}
if ((EN_TRANSFER_FILE_BY_CLOUND == g_iTransFileMode && TAB_INDEX_2D == ((CTabCtrl*)GetParent())->GetCurSel())
|| TAB_INDEX_3D == ((CTabCtrl*)GetParent())->GetCurSel())
{
::SendMessage(GetParentFrame()->m_hWnd, WM_SCHEDULE, (WPARAM)dwItemHandle, (LPARAM)dwImageState);
}
/*
int iSptRecIndex = (int)VAL_ZERO;
DWORD dwItemHandle = (DWORD)VAL_ZERO;
DWORD dwImageState = (DWORD)VAL_ZERO;
DWORD dwTempStyle = (DWORD)VAL_ZERO;
dwTempStyle = PZ_STYLE_SCON_3D;
dwTempStyle <<= HANDLE_OFFSET;
dwItemHandle |= dwTempStyle;
if (TAB_INDEX_3D == ((CTabCtrl*)GetParent())->GetCurSel())
{
::SendMessage(GetParentFrame()->m_hWnd, WM_SCHEDULE, (WPARAM)dwItemHandle, (LPARAM)dwImageState);
}
*/
}
void CNavSpt3DDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
if (TRUE == bShow)
{
Schedule();
}
}
BOOL CNavSpt3DDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CString strColTitle;
m_3dList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP
| LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES);
g_iCurrListColIndex = (int)VAL_ZERO;
g_iCurrListColOrder = (int)VAL_ZERO;
strColTitle.Empty();
strColTitle.LoadString(IDS_DB_SCON_SNAME+g_UIOffset);
m_3dList.InsertColumn(0, strColTitle, LVCFMT_LEFT, 150);
strColTitle.Empty();
strColTitle.LoadString(IDS_DB_SCON_DEFINER+g_UIOffset);
m_3dList.InsertColumn(1, strColTitle, LVCFMT_LEFT, 80);
strColTitle.Empty();
strColTitle.LoadString(IDS_DB_SCON_DEDATE+g_UIOffset);
m_3dList.InsertColumn(2, strColTitle, LVCFMT_LEFT, 80);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CNavSpt3DDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CListCtrl* pNav3DList = NULL;
pNav3DList = (CListCtrl*)(this->GetDlgItem(IDC_LIST_EXEC_3D));
if (pNav3DList != NULL)
{
CRect rect;
GetClientRect(&rect);
pNav3DList->MoveWindow(&rect);
}
pNav3DList = NULL;
}
void CNavSpt3DDlg::OnRclickListExec3d(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CMainFrame* pMainFrm = NULL;
int iSptRecIndex = 0;
UINT uFlags;
CPoint listPoint;
GetCursorPos(&listPoint);
m_3dList.ScreenToClient(&listPoint);
MapWindowPoints(&m_3dList, &listPoint, 1);
iSptRecIndex = m_3dList.HitTest(listPoint, &uFlags);
m_3dList.ClientToScreen(&listPoint);
pMainFrm = (CMainFrame*)AfxGetMainWnd();
ASSERT(NULL != pMainFrm);
if (pMainFrm->MDIGetActive()->IsZoomed()) //当子窗口尺寸为max时,之前主框架中的菜单位置编号递增1
{
if ((VAL_MINUS_ONE != iSptRecIndex) && (LVHT_ONITEM & uFlags))
{
if (NULL != pMainFrm->GetMenu()->GetSubMenu(3)->GetSubMenu(2))
{
pMainFrm->GetMenu()->GetSubMenu(3)->GetSubMenu(2)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
listPoint.x, listPoint.y, GetParentFrame());
}
}
else
{
if (NULL != pMainFrm->GetMenu()->GetSubMenu(3)->GetSubMenu(2))
{
GetCursorPos(&listPoint);
pMainFrm->GetMenu()->GetSubMenu(3)->GetSubMenu(2)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
listPoint.x, listPoint.y, GetParentFrame());
}
}
}
else //当子窗口尺寸为max时,之前主框架中的菜单位置编号递减1
{
if ((VAL_MINUS_ONE != iSptRecIndex) && (LVHT_ONITEM & uFlags))
{
if (NULL != pMainFrm->GetMenu()->GetSubMenu(2)->GetSubMenu(2))
{
pMainFrm->GetMenu()->GetSubMenu(2)->GetSubMenu(2)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
listPoint.x, listPoint.y, GetParentFrame());
}
}
else
{
if (NULL != pMainFrm->GetMenu()->GetSubMenu(2)->GetSubMenu(2))
{
GetCursorPos(&listPoint);
pMainFrm->GetMenu()->GetSubMenu(2)->GetSubMenu(2)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
listPoint.x, listPoint.y, GetParentFrame());
}
}
}
*pResult = 0;
}
void CNavSpt3DDlg::OnItemchangedListExec3d(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if (((pNMListView->uOldState & LVIS_SELECTED) == LVIS_SELECTED) && ((pNMListView->uNewState & LVIS_SELECTED) == VAL_ZERO))
{
Schedule();
}
else if (((pNMListView->uOldState & LVIS_SELECTED) == VAL_ZERO) && ((pNMListView->uNewState & LVIS_SELECTED) == LVIS_SELECTED))
{
Schedule();
}
*pResult = 0;
}
void CNavSpt3DDlg::OnColumnclickListExec3d(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
g_iCurrListColIndex = pNMListView->iSubItem;
g_iCurrListColOrder = !g_iCurrListColOrder;
m_3dList.SortItems(ListStrCompare, (LPARAM)&m_3dList);
*pResult = 0;
}
BOOL CNavSpt3DDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
{
return TRUE;
}
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)
{
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}