130 lines
2.4 KiB
C++
130 lines
2.4 KiB
C++
#include "stdafx.h"
|
|
#include "CCKSXDlg.h"
|
|
#include "AecDbObjXDataMap.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CCKSXDlg, CDialog)
|
|
|
|
CCKSXDlg::CCKSXDlg(CWnd* pParent /*=nullptr*/)
|
|
: CDialog(IDD_CKSX_DLG, pParent)
|
|
{
|
|
|
|
}
|
|
|
|
CCKSXDlg::~CCKSXDlg()
|
|
{
|
|
}
|
|
|
|
void CCKSXDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_LIST1, m_wndListXData);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CCKSXDlg, CDialog)
|
|
ON_MESSAGE(WM_ACAD_KEEPFOCUS, &CCKSXDlg::onAcadKeepFocus)
|
|
ON_WM_SIZE()
|
|
ON_WM_SIZING()
|
|
END_MESSAGE_MAP()
|
|
|
|
LONG_PTR CCKSXDlg::onAcadKeepFocus(UINT_PTR, LONG_PTR)
|
|
{
|
|
POINT pt;
|
|
::GetCursorPos(&pt);
|
|
CRect rect;
|
|
GetWindowRect(&rect);
|
|
if (!(rect.PtInRect(pt)))
|
|
{
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CCKSXDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
CBitmap bmp;
|
|
if (!bmp.LoadBitmap(IDB_BITMAPPRIV))
|
|
{
|
|
AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAPPRIV);
|
|
ASSERT(FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
BITMAP bmpObj;
|
|
bmp.GetBitmap(&bmpObj);
|
|
|
|
UINT nFlags = ILC_COLOR24 | ILC_MASK;
|
|
|
|
m_imageList.Create(16, bmpObj.bmHeight, nFlags, 0, 0);
|
|
m_imageList.Add(&bmp, RGB(255, 0, 0));
|
|
|
|
m_wndListXData.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW);
|
|
m_wndListXData.InsertColumn(0, _T("名称"), LVCFMT_LEFT, 120);
|
|
m_wndListXData.InsertColumn(1, _T("数据"), LVCFMT_LEFT, 280);
|
|
m_wndListXData.SetImageList(&m_imageList, LVSIL_SMALL);
|
|
|
|
GetClientRect(&m_rcMain);
|
|
|
|
CRect rc;
|
|
GetWindowRect(rc);
|
|
m_szDlgWin.cx = rc.Width();
|
|
m_szDlgWin.cy = rc.Height();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CCKSXDlg::ListXDataMap(AecDbObjXDataMap *pXDataMap)
|
|
{
|
|
if (pXDataMap != NULL)
|
|
{
|
|
m_wndListXData.DeleteAllItems();
|
|
pXDataMap->List(&m_wndListXData, 0);
|
|
}
|
|
}
|
|
|
|
|
|
void CCKSXDlg::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
if (cx < m_rcMain.Width() || cy < m_rcMain.Height())
|
|
return;
|
|
|
|
CDialog::OnSize(nType, cx, cy);
|
|
if (nType == -1) return;
|
|
|
|
|
|
CRect rc;
|
|
GetClientRect(&rc);
|
|
|
|
int nH = 0, nW = 0;
|
|
CRect rect;
|
|
|
|
if (::IsWindow(m_wndListXData.m_hWnd))
|
|
{
|
|
m_wndListXData.GetWindowRect(&rect);
|
|
ScreenToClient(&rect);
|
|
rect.right = rc.right - 7;
|
|
rect.bottom = rc.bottom - 7;
|
|
m_wndListXData.MoveWindow(rect);
|
|
}
|
|
}
|
|
|
|
|
|
void CCKSXDlg::OnSizing(UINT fwSide, LPRECT pRect)
|
|
{
|
|
int nWidth = pRect->right - pRect->left;
|
|
int nHeight = pRect->bottom - pRect->top;
|
|
|
|
if (nWidth < m_rcMain.Width())
|
|
{
|
|
pRect->right = pRect->left + m_szDlgWin.cx;
|
|
}
|
|
|
|
if (nHeight < m_rcMain.Height())
|
|
{
|
|
pRect->bottom = pRect->top + m_szDlgWin.cy;
|
|
}
|
|
CDialog::OnSizing(fwSide, pRect);
|
|
}
|