Files
envi-code/SourceCode/Code2026/CoreCommand/CCKSXDlg.cpp
T
2026-09-28 15:28:50 +08:00

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);
}