117 lines
2.4 KiB
C++
117 lines
2.4 KiB
C++
#include "stdafx.h"
|
|
#include "CWQTPDlg.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CWQTPDlg, CDialog)
|
|
|
|
CWQTPDlg::CWQTPDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(IDD_WQTP_DLG, pParent)
|
|
{
|
|
m_idMatCur.setNull();
|
|
m_sMaterialCur = _T("");
|
|
}
|
|
|
|
CWQTPDlg::~CWQTPDlg()
|
|
{
|
|
}
|
|
|
|
void CWQTPDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_LIST1, m_wndListCtrl);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CWQTPDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CWQTPDlg::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDC_BUTTON1, &CWQTPDlg::OnBnClickedButton1)
|
|
END_MESSAGE_MAP()
|
|
|
|
void CWQTPDlg::SetMaterial(LPCTSTR pszMat, const AcDbObjectId &idMat)
|
|
{
|
|
m_sMaterialCur = pszMat;
|
|
m_idMatCur = idMat;
|
|
}
|
|
|
|
bool CWQTPDlg::GetMaterial(CString &szMat, AcDbObjectId &idMat)
|
|
{
|
|
szMat = m_sMaterialCur;
|
|
idMat = m_idMatCur;
|
|
return idMat.isValid();
|
|
}
|
|
|
|
BOOL CWQTPDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_wndListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW);
|
|
m_wndListCtrl.InsertColumn(0, _T("Ãû³Æ"), LVCFMT_LEFT, 500, 0);
|
|
|
|
ShowMaterials();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CWQTPDlg::OnBnClickedOk()
|
|
{
|
|
POSITION ps = m_wndListCtrl.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nItem = m_wndListCtrl.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
m_sMaterialCur = m_wndListCtrl.GetItemText(nItem, 0);
|
|
DWORD_PTR dwData = m_wndListCtrl.GetItemData(nItem);
|
|
m_idMatCur.setFromOldId(dwData);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox(_T("ÇëÑ¡Ôñ²ÄÖÊÌõÄ¿!"));
|
|
return;
|
|
}
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
#define MA_BYBLOCK _T("ByBlock")
|
|
#define MA_BYLAYER _T("ByLayer")
|
|
#define MA_GLOBAL _T("Global")
|
|
|
|
void CWQTPDlg::ShowMaterials()
|
|
{
|
|
m_wndListCtrl.DeleteAllItems();
|
|
|
|
Acad::ErrorStatus es;
|
|
AcDbDictionary *pMaterialDict;
|
|
|
|
es = acdbCurDwg()->getMaterialDictionary(pMaterialDict, AcDb::kForRead);
|
|
if (es == Acad::eOk)
|
|
{
|
|
int nItem = - 1;
|
|
AcDbDictionaryIterator *pIt = pMaterialDict->newIterator();
|
|
if (pIt != NULL)
|
|
{
|
|
for (;!pIt->done();pIt->next())
|
|
{
|
|
LPCTSTR pszName = pIt->name();
|
|
if (_tcscmp(pszName, MA_BYBLOCK) == 0 ||
|
|
_tcscmp(pszName, MA_BYLAYER) == 0 ||
|
|
_tcscmp(pszName, MA_GLOBAL) == 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
AcDbObjectId id = pIt->objectId();
|
|
nItem = m_wndListCtrl.InsertItem(m_wndListCtrl.GetItemCount(),pszName);
|
|
m_wndListCtrl.SetItemData(nItem, id.asOldId());
|
|
}
|
|
delete pIt;
|
|
}
|
|
pMaterialDict->close();
|
|
}
|
|
}
|
|
|
|
void CWQTPDlg::OnBnClickedButton1()
|
|
{
|
|
ShowMaterials();
|
|
}
|