自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 问答 (1)
  • 收藏
  • 关注

原创 mosquitto-auth-plug插件跨平台代码修改(windows/linux)

解决mosquitto鉴权插件mosqitto_auth_plug官方代码不支持windows编译的问题

2023-02-17 09:15:24 206

原创 mosquitto-auth-plug跨平台编译(windows/linux)

mosquitto提供的鉴权除了用户登录mosquitto自带以外,其他鉴权由插件实现。linux下可以找到现成的鉴权插件mosquitto_auth_plug,然而它并不支持windos,所以我们需要一个windows版本的鉴权插件。

2023-02-14 09:58:30 348

原创 AcEdJig随笔

class AcEdJig: public AcRxObject{..AcEdJig的enum:UserInputControls用户输入控制:鼠标点击、键盘按键、键盘输入DragStatus用户输入的响应结果(如按ESC键返回kCancel)CursorType鼠标形状JIG执行的一般步骤:// 启动JIGstart() // 获取第一个对象,常用选择集获取。 getFirst() // 创建动态显示的实体,同时加入到指定的AcDbDat

2020-11-11 20:30:48 1563

原创 从平台中移植接口工作量评估

日常工作中对任务分解时,初略一看以下的接口移植工作给3人/日 ,看起来可以非常轻松地完成,实际去做以后会发现结果会很悲伤!~方案:3人/日罗列接口及其依赖,绘制接口实现流程图、类图、定义移植规则、接口说明、接口调用说明代码移植:2人/日根据所罗列的信息、修改规则进行移植和修改。接口调用及测试:2.5人/日校验接口的可用性及在具体业务中的适用场景。案例中调用场景已经初步模拟,只需要熟悉场景及进行接口调用,根据业务当对调用场景进行增减;接口内部用到的接口较多,业务较为复杂。接口测试调用环境的复

2020-10-14 20:15:39 568 1

原创 depends使用随笔

原文:https://blog.csdn.net/tieshuxianrezhang/article/details/79234106(1)左上角是Dll信息窗口,显示你程序所需的Dll模块;(2)右边第一个窗口是所选的Dll模块所使用的函数;(3)右边第二个窗口是所选Dll模块的所有的导出函数;(4)下面窗口是所有需要的Dll模块的属性。观察原则:关注自己写的dll,忽略系统的dll...

2020-09-21 20:07:14 140

原创 windows程序运行时库随笔

一般作用:windows程序运行所需的库在visual studio的安装目录下,visual studio2019为所在目录:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Redist\MSVC\14.27.29016\x64\Microsoft.VC142.CRT

2020-09-21 19:08:37 81

原创 CBCGPGridCtrl实践

定义说明资源IDC_CHECK .bmp类型的勾选的图片资源IDIDC_FOLDER .ico类型的文件夹图片资源IDIDC_NODE .ico类型的节点图片资源IDIDC_PICTURE_AREA MFC的picture控件ID,该区域用于创建CBCGPGridCtrl控件相关定义列号,方便后期修改enum{ FIRST_CHECK, SECOND_ORINARY, THIRD_BUTTON, FOURTH_COMBBOX, FIVETH_PROGRE

2020-09-12 16:07:33 3398 1

原创 visual studio相关工具

代码走查集成于vs的Sonarlint有服务,有网页的vs代码走查工具Sonarqube以上均需翻墙才能下载:https://www.sonarlint.org/visualstudio/https://www.sonarqube.org/downloads/性能测试工具: VTune

2020-09-12 13:54:59 125

转载 OnPaint和OnDraw的区别随笔

转载自:https://blog.csdn.net/tracing/article/details/2806156窗口改变后,会产生无效区域,这个无效的区域需要重画。一般Windows会发送两个消息WM_PAINT(通知客户区 有变化)和WM_NCPAINT(通知非客户区有变化)。非客户区的重画系统自己搞定了,而客户区的重画需要我们自己来完成。这就需要OnDraw()或 OnPaint()来重画窗口先要明确CView类派生自CWnd类。而OnPaint()是CWnd的类成员,同时负责响应WM_P

2020-09-12 11:57:55 148

转载 DefWindowProc及对WM_CLOSE的理解随笔

DefWindowProc这是一个产生消息的函数;在设备上绘图显示时与WM_PAINT消息无关;WM_CLOSE点击右上角关闭按钮,依次会产生WM_CLOSE,WM_DESTROY,WM_NCDESTROY,WM_QUITM_CLOSE消息产生之后,如果去执行了DefWindowProc函数,那么他会 接着依次连续产生WM_DESTROY WM_NCDESTROY这两个消息。而在WM_DESTROY处理函数中写上了PostQuitMessage(0)这个函数,WM_QUIT 是由这个函..

2020-09-12 11:47:36 210

转载 无法解析的外部符号几种可能随笔

lib 文件未引入。可使用“#pragma comment(lib, “winsock.lib”) ”语句添加 lib 引用,也可在项目依赖里添加。类方法的实现未加类标识。如, “CTest::Connect(void) { … }” 写成了 “Connect(void) { … }”。没有将项目需要的头文件、源文件加入项目中。4.引用了不匹配的lib库(相当于没有引用),比如多字节字符集的程序引用了UNICODE字符集的lib...

2020-09-12 10:58:25 208

原创 visual studio不同版本文件编译问题 compatibility

问题点:LINK : fatal error C1007: 无法识别的标志“-Ot”(在“p2”中)看原因:Visual Studio 2013和更早版本中的Microsoft C ++(MSVC)编译器工具集不保证各个版本之间的二进制兼容性。您不能链接由不同版本构建的目标文件,静态库,动态库和可执行文件。 ABI(Application Binary Interface),对象格式和运行时库不兼容。在Visual Studio 2015、2017和2019中更改了此行为。由任何这些版本的编译器编译

2020-09-08 20:06:47 1394

原创 一个对话框资源与业务分离的小demo

创建"动态链接库(dll)",命名为Dll1,用于实现纯业务接口,与界面无关,使用windows之间共享的dll在dll中分别创建接口导出类MathInterface和接口实现类MathRealize;假如plus是一个会被其他dll调用业务函数。MathInterface类#pragma once#ifndef MATHINTERFACE_H#define MATHINTERFACE_H#define MATH1_API __declspec(dllexport)class MATH.

2020-08-31 20:44:53 113

原创 刷背景色ON_WM_CTLCOLOR(),OnCtlColor

首先定义消息宏BEGIN_MESSAGE_MAP(CMyDialog, CBCGPDialog)ON_WM_CTLCOLOR()END_MESSAGE_MAP()实现刷新函数// 静态函数方便别的类调用static void CMyDialog SetDrawColor(CDC* pDC, CWnd* pWnd, HBRUSH& hBrush);void CMyDialog SetDrawColor(CDC* pDC, CWnd* pWnd, HBRUSH& hBru.

2020-08-31 20:29:40 781

原创 BeginEditorCommand和CompleteEditorCommand失效原因

背景:为了在cad中使得界面达到BCG的效果,自定义的对话框类继承自CBCGPDialog,同时修改BCG的源码,使CBCGPDialog继承自CAcUiDialogclass BCGCBPRODLLEXPORT CBCGPDialog : public CAcUiDialog原因:继承时乱用父类IMPLEMENT_DYNAMIC这个宏的作用是使得MFC框架能够在运行时创建你定义的MFC类的对象,使用IMPLEMENT_DYNAMIC的原因是自定义的MFC类不属于MFC框架,而MFC框架需要在运

2020-08-31 20:24:25 735

原创 使用MFC控件为参照区创建BCG控件随笔

基本原则:MFC控件绑定变量,然后把变量替换成对应的BCG类。部分BCG控件可行。MFC控件不绑定变量,手动声明BCG控件变量。方式一:调用BCG的替换接口,把已有控件替换成BCG的控件。方式二:调用BCG的create接口手动创建。...

2020-08-21 08:50:31 221

原创 CBCGPTabWnd实践浅谈

对话框中拖入一个picture control定义对话框类成员变量CBCGPTabWnd m_wndTab;创建方式一(替换):m_wndTab.CreateOnPlaceHolder(this, IDC_TAB, 1);m_wndTab.SetDialogControl();参考BCG安装目录的例子:C:\Program Files (x86)\BCGSoft\BCGControlBarPro\Samples\TabControl创建方式二(create):CRect rect;Get

2020-08-21 08:49:19 823

原创 CBCGPToolBarImages和CImageList创建与使用

CBCGPToolBarImages images; images.SetImageSize(CSize(16, 16)); images.Load(IDB_ICONS); //IDB_ICONS为.PNG类型图片 globalUtils.ScaleByDPI(images); images.ExportToImageList(m_imageList); 控件对象.SetImageList(m_imageList.GetSafeHandle()); CImageList images; .

2020-08-21 08:45:46 445

原创 BCG控件设置图片

m_Button.SetImage ((HBITMAP) NULL); //按钮无图片 m_Button.SetImage (IDB_BTN1_32, IDB_BTN1_HOT_32, 0, IDB_BTN1_PRESSED_32); //按钮有图片,IDB_BTN1_32为.bmp类型图片 CBCGPToolBarImages m_imageListAnimation; m_imageListAnimation.SetImageSize(CSize(14, 14)); m_imageLi.

2020-08-21 08:43:56 366

原创 arx和all资源切换

CAD的arx工程与dll插件切换资源不同,混用会死机。CAcModuleResourceOverride switchResouce; //ACad切换资源AfxSetResourceHandle(hInstance); //指定dll切换资源,hInstance dll的句柄 DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved){ // hInstance dll的句柄 // dwReason DLL被

2020-08-21 08:34:30 225

原创 查看dmp文件随笔

DMP文件关联主要是与Windows内存转储文件有关。这些文件包含从程序的内存空间中的数据“倾销”。当一个程序崩溃DMP文件通常创建这些指令由该程序的开发人员使用修复缺陷和错误。默认存储在用户目录:C:\Users\admin\AppData\Local\Temp\按日期排序获取最新的.dmp文件,用visual studio打开 “使用仅限本机进行调试” 查看调用堆栈...

2020-08-21 08:33:25 1540

原创 ACAD和dll资源切换

CAD的arx工程与dll插件切换资源不同,混用会死机。CAcModuleResourceOverride switchResouce; //ACad切换资源AfxSetResourceHandle(hInstance); //指定dll切换资源,hInstance => dll的句柄DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved){ // hInstance dll的句柄 // dwRe

2020-08-18 17:53:04 220

原创 dll加载随笔

动态库的加载有两种方法:隐式和显式。方法一: 隐式加载这种方式和静态库的使用方法一样,对应有3种具体的方法,注意此时要包含的是导入库而不是动态库,依然需要头文件,代码中可直接使用头文件中的函数名,并且这种方式在运行时需要需要动态库。隐式就是在编译时链接Dll的引入库lib,然后在程序启动时由程序自动加载对应的Dll,显然 这会略微增加程序启动的时间。而且,如果Dll不存在的话,程序还无法启动。方法二: 显式加载(又称运行时动态链接)在代码中使用LoadLibrary()显式

2020-08-14 18:16:13 82

原创 窗口显示(绘制)与隐藏事件WM_ACAD_KEEPFOCUS、ON_WM_SIZE()、ON_WM_PAINT()、ON_WM_ERASEBKGND

//界面非客户区域失效可通过绘制消息进行重绘;常与虚函数OnDraw一起使用WM_NCPAINT()void OnNcPaint();//界面焦点事件//acadarx非模态对话框的焦点是当前焦点,CAD中非模态对话框一般都要用它,最简单的实现是直接返回TRUE。或判断当前光标坐标是否在对话框窗口内。ON_MESSAGE(WM_ACAD_KEEPFOCUS, OnAcadKeepFocus)afx_msg LRESULT OnAcadKeepFocus(WPARAM, LPARAM); PO

2020-08-14 17:55:40 677

原创 对话框显示与消息随笔

对于一个窗体(包括对话框)来说,它之所以能够显示出来,是因为有一个消息循环负责处理窗体消息,因为有消息循环,所以可以响应用户的输入.当一个对话框显示出来后,它自身就有一个消息循环,专门负责对话框的处理,并且也只是针对对话框而言.因此主窗体消息循环无法继续进行,它也就是不接受用户的输入,我们称对话框阻塞了主线程.而对于一般的框架窗体,它显示之后并没有独立的消息循环,它与主窗体共用一个消息循环,通过这种方式,子窗体也可以响应用户的输入.定时器是CPU机制控制的,程序无法控制,你可以理解为一个定时器是一个

2020-08-13 20:04:29 148

原创 用CBCGPDateTimeCtrl替代CDateTimeCtrl

首先简单介绍一下CDateTimeCtrl的常用事件添加DTN_DROPDOWN //可在事件函数中定义bool标识符,使得DTN_CLOSEUP事件中代码只执行一次。 DTN_CLOSEUP //每点击一次会响应两次DTN_DATETIMECHANGE //控件值变化一、用CBCGPDateTimeCtrl替代CDateTimeCtrl1.对话框拖入一个Button control作为CBCGPDateTimeCtrl的绘制区域;2.h文件定义变量 CBCGPDa

2020-07-29 19:08:14 453

原创 cad进入选择状态前后对话框隐藏与显示(对话框发消息)

方法1:BeginEditorCommand()隐藏所有对话框CompleteEditorCommand() 显示对话框方法1:通过SHOWWINDOW消息首先在消息映射中定义ON_WM_SHOWWINDOW()其次实现消息函数afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);void CCableNodeMarkDlg::OnShowWindow(BOOL bShow, UINT nStatus){ __super::OnSho

2020-07-28 19:37:52 539

原创 创建CBCGPToolBar

1 resource.h中定义资源IDID_TEXT_NAME = 1001ID_COM_NAME = 1002ID_SEPARATOR = 1003ID_DEMO_ADD = 1004ID_DEMO_DEL = 1005ID_DEMO_SAVE = 10062 添加图片资源,vs项目中点开.rc文件添加IDR_BMP_TOOLBAR_FILM = 1007IDR_BMP_TOOLBAR_FACE= 10083 创建toolbar控件nImageID2上的图片会覆盖nImageID上的

2020-07-16 21:24:13 425

原创 CAD中非模态对话框内容被擦除

对话框内容不显示原因是对话框失效后内容不显示。1 解决方案:光标焦点设置和对话框失效重绘第一步, 解决光标使得对话框失效。如果不刷新,当前光标焦点离开非模态对话框后,对话框会处于失效状态。既然这样,可以在当前光标离开对话框后,仍然把对话框设置成当前焦点。在宏BEGIN_MESSAGE_MAP(class,baseClass) 和 宏END_MESSAGE_MAP()中间定义WM_ACAD_KEEPFOCUS消息映射ON_MESSAGE(WM_ACAD_KEEPFOCUS, OnAcadKeepFoc

2020-07-16 20:22:16 202

原创 刷新CStatic控件

CStatic m_static_txt;方法1:隐藏后显示, 该方法严重耗费资源;严重闪烁m_static_txt.ShowWindow(SW_HIDE);m_static_txt.SetWindowText(_T("文本值"));m_static_txt.ShowWindow(SW_SHOW);方法2:调用相关API,强制刷新控件区域m_static_txt.SetWindowText(_T("文本值"));CRect staticRect;m_static_txt.GetWindow

2020-07-16 19:36:18 386

原创 acedarx调试

打开CAD软件》右键选项》支持文件搜索路径》添加 (arx所在路径)受信任的位置》添加 (arx所在路径)visual studio中选择项目右键》属性》调试》acad.exe所在路径

2020-07-16 19:34:48 185

转载 【图像分类】华为云·垃圾分类亚军方案分享

<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"><title>(1条消息)【图像分类】华为云·垃圾分类亚军方案分享_QLMX-CSDN博客_华为垃圾分类</title> <meta name="keywords" conten...

2020-07-09 08:43:34 515

转载 选择集函数acedSSGet的各种用法

http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%9C%89/6914.shtmlhttps://blog.csdn.net/u011511587/article/details/17165155

2020-07-08 21:59:26 732

原创 解耦上层dll依赖底层dll

c++的同学会想到:在其中一个dll中定义另一个dll的被用到的类的基类,利用继承和多态解决该问题例如:dll2中定义了系统主题样式类CSystemTheme,需要在更底层的dll1中设置系统主题样式class CSystemTheme{public: CBsSystemTheme(void); ~CBsSystemTheme(void); /* * 获取当前主题 */ int GetCurrentTheme(){ return m_nCurrentTheme;}private:

2020-07-08 21:13:45 313

原创 调用windows API使用HDC重绘控件、文字、颜色

看了一些绘制相关的windows API函数:// 删除和重绘ExtTextOut 用当前选择的字体、背景颜色和正文颜色来绘制一个字符串DrawText 在指定的矩形里写入格式化的正文GetSysColor(COLOR_HIGHLIGHT) windows的高亮背景颜色GetSysColor(COLOR_HIGHLIGHTTEXT) windows的高亮字体颜色GetTextMetrics 该函数把程序当前的字体信息,存放到TEXTMETRIC,获取后设置到需要重绘的字体信息中,例如对齐方式

2020-07-01 18:41:39 4407

原创 std::bind函数作为函数、参数

#include <iostream>#include <vector>#include <functional>#include <cstring>#include <cassert>using namespace std;using namespace std::placeholders;bool isBigger(const wstring &str, int nSize){ str.size() > n

2020-06-30 20:56:20 946

原创 value 不是 boost::proto 的成员

代码中依赖boost库,boost版本是1.67 ,这是用visual studio 2019编译代码时出现的链接错误解决方法: 使用vs2019编译时,boost版本不低于1.70 ,这是vs2019不完全支持boost1.70以下版本造成的。

2020-06-29 17:05:00 690

原创 Tokenizes分割CString字符串

对CString分割字符串,推荐使用其成员函数TokenizeCString str(255,255,255);std::vector<CString> vecRGB;CString strToken(_T(","));int nPos = 0;while(1) { strRGBValue = str.Tokenize(strToken ,nPos); if (-1 == nPos || strRGBValue.IsEmpty()) { break; } vecRGB.

2020-06-28 21:43:57 747

原创 仿函数基础及进阶

基础1.1用仿函数实现一般的比较class Compare {public: bool operator()(double a, double b) { return a < b; }};std::vector<double> vecData = { 2,1,3};std::sort(vecData.begin(), vecData.end(), Compare());// 排序后结果是1 2 3 1.2用仿函数实现过滤class CFilter {publ

2020-06-17 20:38:23 112

原创 cell组件适配BCG风格--适配器模式和查表法

分析目标:最小的改动现有代码,使得cell组件适配BCG颜色样式启发点:一款软件中有100个对话框,是怎么做到每个对话框都用同一个图标的?每个对话框添加一个icon资源?cell组件设置颜色的接口需要指定了固定的RGB值索引,存量代码调用了这些接口; 怎么做到这些RGB值索引根据系统风格动态变换?继承回答了第一个问题。派生类CMyBaseDialog继承CDialog并添加图片资源,所有继承CMyBaseDialog的子类可使用同一张图片。多态回答了第二个问题。为cell组件用到的每一

2020-06-15 21:26:10 189

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除