ObjectARX_控件(线型、颜色、线宽、字体)

2023-10-19 02:20

本文主要是介绍ObjectARX_控件(线型、颜色、线宽、字体),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.线型控件:CAcUiLineTypeComboBox

在其他中添加需要的线型

class CLineTypeComboBox : public CAcUiLineTypeComboBox
{
public:CLineTypeComboBox ();virtual ~CLineTypeComboBox ();virtual BOOL OnSelectOther (BOOL isOther2, int curSel, int& newSel);virtual void OnComboBoxInit ();    
}; 
#include "StdAfx.h"
#include "LineTypeComboBox.h"CLineTypeComboBox::CLineTypeComboBox()
{
}CLineTypeComboBox::~CLineTypeComboBox()
{
}void CLineTypeComboBox::OnComboBoxInit ()
{	Acad::ErrorStatus es;//用父类初始化CAcUiLineTypeComboBox::OnComboBoxInit();	std::vector<CString> arrstrLtName;//如果需要添加新线型,只需定义好新的宏名,在此加入即可...arrstrLtName.push_back(HH_NEWLINETYPE_001);arrstrLtName.push_back(HH_NEWLINETYPE_002);//新建线型,使用户在界面上能够选择到新增的线型AcDbDatabase *pCurDb=acdbHostApplicationServices()->workingDatabase();AcDbLinetypeTable  *pLinetypeTable;	es = pCurDb->getSymbolTable(pLinetypeTable, AcDb::kForWrite);if (es != Acad::eOk){return;}int i=0;for (i=0; i<(int)arrstrLtName.size(); i++){CString strLtName = arrstrLtName.at(i);if (!pLinetypeTable->has(strLtName)){AcDbLinetypeTableRecord  *pLinetypeRecord = new AcDbLinetypeTableRecord;pLinetypeRecord->setName(strLtName);if (i == 0){pLinetypeRecord->setComments(_T("新增线型")+strLtName+_T("—>————<—"));	}else if (i == 1){pLinetypeRecord->setComments(_T("新增线型")+strLtName+_T("—>>———<<—"));	}AcDbObjectId idLT = AcDbObjectId::kNull;es =  pLinetypeTable->add(idLT,pLinetypeRecord);CString LtName = strLtName;CAcUiLTypeRecord* pLTypeRecord = CreateLTRecord(LtName, idLT);CAcUiLineTypeComboBox::AddLTypeToControl(pLTypeRecord);pLinetypeRecord->close();}}pLinetypeTable->close();	
};	BOOL CLineTypeComboBox::OnSelectOther(BOOL isOther2, int curSel, int& newSel)
{return __super::OnSelectOther(isOther2, curSel, newSel);
}

加载线型文件

TCHAR sLineTypeFile[256];if (ads_findfile( _T("HHCAD.LIN"),sLineTypeFile)==RTNORM){acdbLoadLineTypeFile(_T("continuousx"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO02W100"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO02W100x"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO07W100"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO10W100"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("ACAD_ISO10W100x"),sLineTypeFile,NULL);acdbLoadLineTypeFile(_T("DASHED2"),sLineTypeFile,NULL);}

2.颜色控件:CAcUiColorComboBox

int nColor = 1;//黑色
nIndex = m_cmbColor.FindItemByColorIndex(nColor);
if (nIndex > -1)m_cmbColor.SetCurSel(nIndex);

3.线宽控件:CAcUiLineWeightComboBox

4.字体控件:

//====================================
// 函数名称	: GetDirFiles
// 函数介绍	: 取得某目录下所有指定属性的文件名
// 返 回 值	: 选择的文件夹全路径
//
//====================================
bool CAppUtility::GetDirFiles( LPCTSTR lpDir,//目录					  std::vector<CAppUtility::_FileStru_>&arr,// 返回文件
LPCTSTR lpExt/*="*.*"*/,// 寻找的文件类型
bool bIsIncludeSub/* = true*/// 是否包含子目录)
{CString szPath = lpDir;if ( szPath.IsEmpty() )return false;if ( szPath.Right(1) != _T('\\') )szPath += _T("\\");// 进入路径if ( _tchdir(szPath) != 0 )return false;_FileStru_ aFile;_tcscpy(aFile.szPath, szPath);// 路径intptr_t hHand = _tfindfirst(lpExt, &aFile);if ( -1 == hHand )return false;for (int nRet=0; nRet!=-1; nRet=_tfindnext(hHand, &aFile)){// 判断如果是.或..则继续循环if ( 0 == _tcscmp(aFile.name, _T(".")) ||0 == _tcscmp(aFile.name, _T("..")) )continue;// 如果是目录,则进入if ( aFile.IsDir() ){if ( !bIsIncludeSub )continue;CString szSub = szPath + aFile.name+_T("\\");GetDirFiles(szSub, arr, lpExt, bIsIncludeSub);}else{_stprintf(aFile.szPath, _T("%s%s"), szPath, aFile.name);// 分解文件名与后缀 CString strTemp(aFile.name);// 从后向前分离出文件名、格式名(以.为分界符) int nPos = strTemp.ReverseFind(_T('.'));if ( -1 != nPos ){_tcscpy(aFile.strExtOnly, strTemp.Mid(nPos+1,strTemp.GetLength()-nPos));strTemp = strTemp.Mid(0,nPos);}			elseaFile.strExtOnly[0] = _T('');_tcscpy(aFile.strNameOnly, strTemp);arr.push_back(aFile);}}_findclose(hHand);return true;
}extern "C" __declspec(dllexport) int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)
{CComboBox *pComb = (CComboBox *) ((void*)lparam);pComb->AddString(lpelf->elfLogFont.lfFaceName);	//Stylereturn 1;
}void InitFontCmb()
{LOGFONT lf;CClientDC dc (this);lf.lfCharSet =  ANSI_CHARSET; //中国标准字体_tcscpy(lf.lfFaceName,_T("")); //设置Style::EnumFontFamiliesEx((HDC) dc,&lf,(FONTENUMPROC)EnumFontFamProc,(LPARAM) (&m_cmbFont),0);// 寻找字体std::vector<CAppUtility::_FileStru_>arrSHX;CAppUtility::GetDirFiles(CAppUtility::GetCADPath()+_T("Font"), arrSHX, _T("*.shx"), true);CAppUtility::GetDirFiles(CAppUtility::GetPathFont(), arrSHX, _T("*.shx"), true);for (int i=0; i<(int)arrSHX.size(); ++i){if ( m_cmbFont.FindString(-1, arrSHX[i].strNameOnly) != -1 )continue;m_cmbFont.AddString(arrSHX[i].strNameOnly);}
}

 

 

转载于:https://my.oschina.net/u/2930533/blog/1575940

这篇关于ObjectARX_控件(线型、颜色、线宽、字体)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/236646

相关文章

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

渐变颜色填充

GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充。我们先来看看GradientFill函数到底长得什么样子,帅不帅。 [cpp]  view plain copy print ? BOOL GradientFill(     _In_  HDC hdc,     _In_  PTRIVERTEX pVertex,     _In_  ULONG

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的

Qt-常用控件(3)-多元素控件、容器类控件和布局管理器

1. 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例. QTableView 是基于 MVC 设计的控件.QTableView 自身不持有数据,使用 QTab

【虚拟机/服务器】非图形化界面下修改Shell中颜色的设置

1、首先 cd ~ && ll 可以看到如下图所示 2、输入 sudo vim .bashrc 进入 .bashrc 并通过 /PS1 迅速从上往下定位第一个PS1 3、输入 i 进入插入模式后修改 else 下面的配置如下 说明:\e[1;32;40m] 其中1表示高亮显示,32表示字体颜色是绿色,40表示背景色为黑色 4、输入 esc 退出编辑模式到命令模式,再输入

【超简单】1分钟解决ppt全文字体一键设置

省流 ppt的全部字体需要在“幻灯片母版”里面,“自定义字体”去设置好标题与正文的字体之后才算全部设置完毕 “视图”---“幻灯片母版” 找到“字体”---“自定义字体” 设置好中文和西文的字体,都可以按照自己的选择来,保存即可 吐槽 之所以发这么一个基础的帖子是因为,之前全网到处搜都没看到成功设置了的,其实才发现在自定义里面得多一步这个才可以,还好早发现了,希望能

Excel查询颜色RGB值

1.选中单元格,点右键,设置单元格格式-填充-其他颜色-自定义,下面显示的就是该单元格颜色的RGB值 2.与十六进制换算: https://www.sioe.cn/yingyong/yanse-rgb-16/