// BlkManReplaceOption.cpp : implementation file // #include "stdafx.h" #include "resource.h" #include "BlkManReplaceOption.h" #include "BlockManDlg.h" #include "TKWorkspace.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CBlkManReplaceOption dialog static int g_nUseDialog=0; int CBlkManReplaceOption::m_nFixScale = 1; int CBlkManReplaceOption::m_nOneByOne = 0; CBlkManReplaceOption::CBlkManReplaceOption(CWnd* pParent /*=NULL*/) : CModelessDialog(CBlkManReplaceOption::IDD, pParent) { //{{AFX_DATA_INIT(CBlkManReplaceOption) //}}AFX_DATA_INIT m_stkwfile = _T(""); m_sCurRecord = _T(""); m_stkfile = _T(""); m_nUseOtherBlkToRepl=0; m_bUseJpg=FALSE; } CBlkManReplaceOption::CBlkManReplaceOption(CString tkwfile,CString tkfile,CString curRecord,CWnd* pParent) : CModelessDialog(CBlkManReplaceOption::IDD, pParent) { m_stkwfile = tkwfile; m_sCurRecord = curRecord; m_stkfile = tkfile; m_nUseOtherBlkToRepl=0; m_bUseJpg=FALSE; } void CBlkManReplaceOption::DoDataExchange(CDataExchange* pDX) { CModelessDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CBlkManReplaceOption) DDX_Radio(pDX, IDC_RAD_FIXSCALE, m_nFixScale); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CBlkManReplaceOption, CModelessDialog) //{{AFX_MSG_MAP(CBlkManReplaceOption) ON_WM_CLOSE() ON_WM_DESTROY() ON_WM_KILLFOCUS() ON_BN_CLICKED(IDC_PIC_SLIDE, OnSlide) ON_WM_PAINT() ON_WM_SETCURSOR() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CBlkManReplaceOption message handlers void CBlkManReplaceOption::OnClose() { SaveStatus(); CModelessDialog::OnClose(); } BOOL CBlkManReplaceOption::OnInitDialog() { CModelessDialog::OnInitDialog(); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CBlkManReplaceOption::OnDestroy() { CModelessDialog::OnDestroy(); SaveStatus(); } void CBlkManReplaceOption::OnKillFocus(CWnd* pNewWnd) { CModelessDialog::OnKillFocus(pNewWnd); GetStatus(); } void CBlkManReplaceOption::SaveStatus() { GetStatus(); // m_libConfig.SaveTo(m_sIniFile); } int CBlkManReplaceOption::GetControlFlag() { int nControlFlag=0; if(m_nFixScale==1) nControlFlag|=LO_FIXDIMENSION_R; else if(m_nFixScale==0) nControlFlag&=~LO_FIXDIMENSION_R; if(m_nOneByOne==1) nControlFlag|=LO_ALLINSERT_R; else if(m_nOneByOne==0) nControlFlag&=~LO_ALLINSERT_R; return nControlFlag; } void CBlkManReplaceOption::GetStatus() { UpdateData(); /* if(m_nFixScale==1) m_libConfig.nControlFlag|=LO_FIXDIMENSION_R; else if(m_nFixScale==0) m_libConfig.nControlFlag&=~LO_FIXDIMENSION_R; if(m_nOneByOne==1) m_libConfig.nControlFlag|=LO_ALLINSERT_R; else if(m_nOneByOne==0) m_libConfig.nControlFlag&=~LO_ALLINSERT_R; */ } extern int g_nUseDialog;//要不要使用下级对话框 void CBlkManReplaceOption::DrawSld() { CWnd *pImageBox=GetDlgItem(IDC_PIC_SLIDE); if(pImageBox) { CDC *pDC=pImageBox->GetDC(); COLORREF dwBackImage=GetAcadBackColor(); CRect rc; pImageBox->GetClientRect(&rc); m_slideDc.InitDC(pDC, rc, dwBackImage); if(m_bUseJpg) m_slideDc.PaintJpeg(m_sSldFile); else m_slideDc.PaintSlide(m_sSldFile); m_slideDc.SetDC(NULL); pImageBox->ReleaseDC(pDC); } } extern AcDbObjectId GetRepBlkId(const TCHAR* szTKName, const TCHAR* szDrawing, BOOL m_bIsJpgShow); void CBlkManReplaceOption::OnSlide() { // TODO: Add your control notification handler code here SaveStatus(); m_nUseOtherBlkToRepl=1; g_nUseDialog=1;//更改了要插入的块选项 //modified by cwk CString csSysPath = m_stkwfile;//modified by cwk XString xsTKFile = m_stkfile, xsDefaultItem = m_sCurRecord; CTKWorkspace dlg((const TCHAR *)csSysPath, (const TCHAR *)xsTKFile, (const TCHAR *)xsDefaultItem, FALSE); if(dlg.DoModal()==IDOK) { TCHAR szDrive[_MAX_DRIVE]=_T(""), szDir[_MAX_DIR]=_T(""), szFile[_MAX_FNAME]=_T(""), szExt[_MAX_EXT]=_T(""); _tsplitpath(dlg.m_csLastTKName, szDrive, szDir, szFile, szExt); m_sSldFile = XString(_T("%s%s%s"), szDrive, szDir, (const TCHAR *)dlg.m_csRet); SplitSlbName(m_sSldFile, xsTKFile, xsDefaultItem); m_bUseJpg = dlg.m_treeCtrl.m_bIsJpgShow; AcDbDatabase *dwg=acdbCurDwg(); AcAxDocLock docLock(dwg); VERIFY(docLock.lockStatus() == Acad::eOk); m_idBlock = GetRepBlkId((const TCHAR *)xsTKFile, (const TCHAR *)xsDefaultItem, m_bUseJpg); m_sCurRecord = xsDefaultItem;//add by cwk on 060911 DrawSld(); return; } } void CBlkManReplaceOption::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here DrawSld(); // Do not call CModelessDialog::OnPaint() for painting messages } BOOL CBlkManReplaceOption::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { // TODO: Add your message handler code here and/or call default if(pWnd!=this){ BOOL bReturn; CRect rcSlide; CPoint ptCursor; // CWnd* pBtn = GetDlgItem( IDC_PIC_SLIDE ); pBtn->GetWindowRect(rcSlide); GetCursorPos( &ptCursor ); if( rcSlide.PtInRect( ptCursor ) == TRUE ){ CWinApp* pApp = AfxGetApp(); HICON hIcon = pApp->LoadCursor(IDC_CUR_SEL); SetCursor( hIcon ); bReturn = TRUE; return bReturn; } } return CModelessDialog::OnSetCursor(pWnd, nHitTest, message); }