// DlgValStrFixed.cpp : 实现文件 // #include "stdafx.h" #include "LaiPuLaser.h" #include "DlgFontset.h" #include "afxdialogex.h" #include "CommandModifiFont.h" #include "GlobalFunction.h" #include "CommandMgr.h" // CDlgValStrFixed 对话框 IMPLEMENT_DYNAMIC(CDlgFontSet, CDialogEx) BEGIN_MESSAGE_MAP(CDlgFontSet, CDialogEx) ON_BN_CLICKED(IDOK,OnBnClickedOk) ON_BN_CLICKED(IDC_ARC_TXT_CHECK, &CDlgFontSet::OnBnClickedArcTxtCheck) ON_BN_CLICKED(IDC_GAP_TYPE1, &CDlgFontSet::OnBnClickedGapType1) ON_BN_CLICKED(IDC_GAP_TYPE2, &CDlgFontSet::OnBnClickedGapType2) END_MESSAGE_MAP() CDlgFontSet::CDlgFontSet(SFontPar FontPar,CWnd* pParent) : CDialogEx(CDlgFontSet::IDD,pParent),m_FontPar(FontPar) { m_FontParTmp = m_FontPar; } CDlgFontSet::~CDlgFontSet() { } void CDlgFontSet::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_CHAR_GAP, m_FontParTmp.m_CharGap); DDX_Text(pDX, IDC_ARC_RADIUS, m_FontParTmp.m_ArcRadius); DDX_Text(pDX, IDC_CHAR_HEIGHT, m_FontParTmp.m_CharHeight); DDX_Text(pDX, IDC_ITALIC_ANGLE, m_FontParTmp.m_ItalicAngle); DDX_Text(pDX, IDC_ARC_ANGLE, m_FontParTmp.m_ArcAngle); DDX_Control(pDX, IDC_ARC_TXT_CHECK, m_bArcCheck); DDX_Control(pDX, IDC_REVERSE_COMBO, m_bReverseComb); DDX_Control(pDX, IDC_DIR_COMBO, m_bDirectComb); DDX_Control(pDX, IDC_IN_OUT_SIDE_COB, m_bOutDirComb); DDX_Control(pDX, IDC_ARC_RADIUS, m_ArcRadiusEdit); DDX_Control(pDX, IDC_ARC_ANGLE, m_ArcAngleEdit); } BOOL CDlgFontSet::OnInitDialog() { CDialogEx::OnInitDialog(); m_bArcCheck.SetCheck(m_FontParTmp.m_bArc); IniGapTypeRadio(); EnableArcTxtCtr(m_FontParTmp.m_bArc); IniReverseComb(m_FontParTmp.m_bReverse); IniOutDirComb(m_FontParTmp.m_bOutDir); IniDirComb(m_FontParTmp.m_bVertical); UpdateData(FALSE); return TRUE; } void CDlgFontSet::IniGapTypeRadio() { if(m_FontParTmp.m_GapType ==SFontPar::_Center) { ((CButton *)GetDlgItem(IDC_GAP_TYPE1))->SetCheck(TRUE); } else { ((CButton *)GetDlgItem(IDC_GAP_TYPE2))->SetCheck(TRUE); } //图片 { HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_GAP_TYPE2)); ((CButton *)GetDlgItem(IDC_GAP_TYPE1))->SetBitmap(hBitmap); } { HBITMAP hBitmap; hBitmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_GAP_TYPE1)); ((CButton *)GetDlgItem(IDC_GAP_TYPE2))->SetBitmap(hBitmap); } } void CDlgFontSet::IniReverseComb(bool b) { m_bReverseComb.InsertString(0,"正序"); m_bReverseComb.InsertString(1,"逆序"); if(b) { m_bReverseComb.SetCurSel(1); } else { m_bReverseComb.SetCurSel(0); } } void CDlgFontSet::IniDirComb(bool b) { m_bDirectComb.InsertString(0,"水平"); m_bDirectComb.InsertString(1,"垂直"); if(b) { m_bDirectComb.SetCurSel(1); } else { m_bDirectComb.SetCurSel(0); } } void CDlgFontSet::IniOutDirComb(bool b) { m_bOutDirComb.InsertString(0,"内向"); m_bOutDirComb.InsertString(1,"外向"); if(b) { m_bOutDirComb.SetCurSel(1); } else { m_bOutDirComb.SetCurSel(0); } } //检查输入 bool CDlgFontSet::CheckInput() { return true; } //设置修改的参数值 void CDlgFontSet::SetFontPar() { if(m_bReverseComb.GetCurSel()==0)//是否逆序 { m_FontParTmp.m_bReverse = false; } else { m_FontParTmp.m_bReverse = true; } if(m_bOutDirComb.GetCurSel()==0)//是否为外向文本 { m_FontParTmp.m_bOutDir = false; } else { m_FontParTmp.m_bOutDir = true; } if(m_bDirectComb.GetCurSel()==0)//字符方向 { m_FontParTmp.m_bVertical = false; } else { m_FontParTmp.m_bVertical = true; } } //创建并执行修改指令 void CDlgFontSet::AddModifiCmd() { CCommandModifiFont *pCmd = new CCommandModifiFont; pCmd->SetStringPar(m_FontPar,true);//保存旧的参数 pCmd->SetStringPar(m_FontParTmp,false);//保存新的参数 gCommandMgr.AddUndoCommand(pCmd); pCmd->Excute(); } void CDlgFontSet::OnBnClickedArcTxtCheck() { UpdateData(TRUE); m_FontParTmp.m_bArc = m_bArcCheck.GetCheck(); EnableArcTxtCtr(m_FontParTmp.m_bArc); } //是否禁用圆弧文本相关的控件 void CDlgFontSet::EnableArcTxtCtr(bool b) { m_ArcRadiusEdit.EnableWindow(b); m_ArcAngleEdit.EnableWindow(b); } //以中心点为基准计算间隔 void CDlgFontSet::OnBnClickedGapType1() { m_FontParTmp.m_GapType = SFontPar::_Center; } //以上一个字符的最右边为基准 void CDlgFontSet::OnBnClickedGapType2() { m_FontParTmp.m_GapType = SFontPar::_Boundary; } void CDlgFontSet::OnBnClickedOk() { UpdateData(TRUE); if(!CheckInput()) return; //设置修改的参数值 SetFontPar(); //创建并执行修改指令 AddModifiCmd(); OnOK(); }