#include "stdafx.h" #include "CRDTDlg.h" IMPLEMENT_DYNAMIC(CCRDTDlg, CDialog) CCRDTDlg::CCRDTDlg(CWnd* pParent /*=NULL*/) : CDialog(CCRDTDlg::IDD, pParent) , m_sName(_T("")) , m_dEl(0) , m_sDwgFile(_T("")) { m_bUpdate = FALSE; } CCRDTDlg::~CCRDTDlg() { } void CCRDTDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT3, m_sName); DDX_Text(pDX, IDC_EDIT2, m_dEl); DDX_Text(pDX, IDC_EDIT1, m_sDwgFile); DDX_Control(pDX, IDC_EDIT2, m_wndEditEl); DDX_Control(pDX, IDC_EDIT3, m_wndEditName); } BEGIN_MESSAGE_MAP(CCRDTDlg, CDialog) ON_BN_CLICKED(IDOK, &CCRDTDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_BUTTON1, &CCRDTDlg::OnBnClickedButton1) END_MESSAGE_MAP() void CCRDTDlg::OnBnClickedOk() { OnOK(); } void CCRDTDlg::OnBnClickedButton1() { const TCHAR *pszFilter = _T("dwg文件 (*.dwg;)|*.dwg|"); CFileDialog dlg(TRUE, _T("dwg"), NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER, pszFilter, NULL); TCHAR strFileName[MAX_PATH] = _T(""); TCHAR strFileTitle[] = _T("选择单体图纸文件"); int maxChar = MAX_PATH; dlg.m_ofn.lpstrFile = strFileName; dlg.m_ofn.nMaxFile = maxChar; dlg.m_ofn.lpstrTitle = strFileTitle; if(dlg.DoModal() != IDOK) { return; } m_sDwgFile = dlg.GetPathName(); m_sName = dlg.GetFileTitle(); UpdateData(FALSE); } BOOL CCRDTDlg::OnInitDialog() { CDialog::OnInitDialog(); if (m_bUpdate) { GetDlgItem(IDC_STATIC_C)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC_N)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC_M)->ShowWindow(SW_HIDE); m_wndEditEl.ShowWindow(SW_HIDE); m_wndEditName.ShowWindow(SW_HIDE); GetDlgItem(IDOK)->SetWindowText(_T("更新")); } DwgFileNameFromClipboard(); UpdateData(FALSE); return TRUE; } void CCRDTDlg::DwgFileNameFromClipboard() { //发送到粘贴板 OleInitialize(NULL); char* buffer = NULL; if( ::OpenClipboard(acedGetAcadFrame()->m_hWnd)) { HANDLE hData = GetClipboardData(CF_TEXT); char* buffer = (char*)GlobalLock(hData); m_sDwgFile = buffer; GlobalUnlock(hData); CloseClipboard(); int nPos = m_sDwgFile.ReverseFind(_T('\\')); if (nPos != -1) { CString sTemp = m_sDwgFile.Mid(nPos+1); nPos = sTemp.ReverseFind(_T('.')); if (nPos != -1) { m_sName = sTemp.Mid(0,nPos); } } } }