Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

203 lines
5.4 KiB
C++

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