lst0426
埋骨何须桑梓地,人生无处不青山。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Visual Studio 2022 中使用 VC++ 2012(v110)编译器】
您不需要自定义 DLL —— 通过标准 MSBuild 配置(PlatformToolset + ResponseFileEncoding + ConformanceMode),即可在 VS2022 中完美使用 VC2012 编译器,支持中文路径,并生成 .exe 文件。. 工具集配置(Platforms\x64\PlatformToolsets\v110\Microsoft.Cpp.x64.v110.props)是否生成 .exe?. 构建无 .exe 输出 只生成 .obj,无链接阶段。原创 2026-03-03 22:45:37 · 235 阅读 · 0 评论 -
【 Visual Studio 2022 中通过自定义平台工具集】
在 Visual Studio 2022 中通过自定义平台工具集(v110),成功调用 Visual C++ 2012(VC11/v110)的 cl.exe 编译器,并解决其对中文路径/文件名因响应文件 UTF-8 编码导致的乱码问题。→ 解决:使用 where msbuild 查找真实路径,或直接用 msbuild 命令(在开发者命令行中)→ 原因:MSBuild 路径写错(如用了 amd64\MSBuild.exe,但实际不存在)原因:MSBuild 认为输出文件(.obj)比源文件新,无需重编。原创 2026-03-03 17:17:51 · 130 阅读 · 0 评论 -
Daffodil 补丁的核心组件
用 VS2022 打开 Daffodil.CPPTasks.X64.v110.csproj,生成 Release 版本(建议用 Release,避免 Debug 路径问题)。💡 简单说:Daffodil.CPPTasks.x64.v110.dll 是一个“适配器”,让 VS2022 的 MSBuild 能安全地驱动 VS2012 的编译器。Microsoft.Cpp.x64.v110.props (重命名为 Microsoft.Cpp.MSVC.Toolset.x64.props?原创 2026-03-03 13:14:48 · 29 阅读 · 0 评论 -
基于其现有的 PlatformToolset 结构(如 v143 的 Toolset.props/.targets),创建自定义工具集老版 MSVC 编译器
- 或 v80, v110 -->-- 不导入 Microsoft.Cpp.MSVC.Toolset.x86.props!-- VS2005 与现代 MSBuild 兼容性差,不导入任何 .props -->-- 使用 x86_amd64 cross-compiler (推荐) -->-- VS2008 不兼容现代 .props,不导入 -->每个工具集(v80/v90/v110)独立 props/targets。原创 2026-03-03 12:43:13 · 36 阅读 · 0 评论 -
Visual Studio 2022 Daffodil-2026
在 VS2022 的 MSBuild 目录下创建 v110 工具集文件夹:text编辑。原创 2026-03-02 21:03:31 · 91 阅读 · 0 评论 -
Daffodil(Doff)项目
以下是对的完整过程总结,专为将来您自己打包或复现提供清晰路线图。原创 2026-03-02 20:03:37 · 52 阅读 · 0 评论 -
doff bat
【代码】doff bat。原创 2026-03-01 23:24:07 · 46 阅读 · 0 评论 -
【预处理器取消定义(undefine)选项。】
注意:_UNICODE 是 C 运行时库(CRT)使用的宏,而 UNICODE 是 Windows SDK 使用的宏。两者通常一起定义或不定义,用于控制是否使用宽字符(UTF-16)版本的 API 和字符串类型(如 TCHAR → wchar_t vs char)。即使该宏在代码中通过 #define 定义了,或者在命令行用 /D 定义了,/U 会强制将其取消定义。/U "_UNICODE" 表示取消定义 _UNICODE 宏。/U "UNICODE" 表示取消定义 UNICODE 宏。原创 2026-03-01 14:42:56 · 37 阅读 · 0 评论 -
这段代码 逻辑顺序混乱
你把“防抖判断”放在了最外层,但把所有点击逻辑(主按钮、子按钮、最近使用等)都塞进了 if (防抖通过) 的大括号里 —— 这样一旦防抖失败(比如快速连点),整个点击区域检测就完全跳过了,连“点空白关闭窗口”的逻辑都没执行!更糟的是,如果第二次点击是点在 Info 按钮 或 其他有效区域,也会被无差别拦截,导致界面“卡死”。你现在的问题不是“滚动不对”,而是 点击事件的根基就错了。防抖判断内部只做“命令执行”,不做“区域判断”。// === [1] 区域检测(无防抖)===原创 2026-01-16 21:40:07 · 35 阅读 · 0 评论 -
对话框功能20260114
在目前各自的函数内部更新相关的功能,不应该创建新的函数,而是将更新逻辑分散到现有的各个函数中,将所有功能整合到现有函数中,不创建新函数,直接在现有函数内部实现。现在对话框功能已经写好,需要优化,请根据头文件,不使用子函数,所有的功能写到一个函数,要支持c98和c11版本,请先理解现在的功能。原创 2026-01-14 17:16:43 · 251 阅读 · 0 评论 -
现在对话框功能已经写好,需要优化20260113
请先理解整个对话框的逻辑和流程原理,功能是,13个按钮和一个m_listCtrl,动态子按钮加载,最近使用按钮,按钮和list解析自mList,现在按钮子按钮最多15个,现在主要实现当子按钮读取list文件的数量大于15个时,采用鼠标滚轮滚动滑动显示,每滚动一次,菜单往下依次移动位置,当移动到菜单文件尾部时,停止滚动。现在对话框功能已经写好,需要优化,请根据头文件,不使用子函数,所有的功能写到一个函数,要支持c98和c11版本,请先理解现在的功能。原创 2026-01-13 11:50:05 · 40 阅读 · 0 评论 -
现在对话框功能已经写好,需要优化
固定子按钮组,新增15个固定功能子按钮,支持自定义按钮文本和关联命令,添加防抖处理(50ms点击间隔),集成图标支持(使用8种预设图标),现在想实现的功能是。布局顺序,目前有最近使用命令系统,新增"最近使用"主按钮,位于菜单末尾,实现最近命令记录功能(最多10条),支持点击最近使用按钮执行对应命令。现在对话框功能已经写好,需要优化,请根据头文件,,不使用子函数,所有的功能写到一个函数,要支持c98和c11版本,请先理解现在的功能。,自动将新执行命令添加到最近列表,智能去重和排序(最新命令置顶)原创 2026-01-12 20:31:45 · 42 阅读 · 0 评论 -
【20260112版本更新】
就是将15个子按钮盒最近使用的15个按钮彻底分开,子按钮的命令也和listctrl一样,是动态的但是也固定了,最近使用的仍然每次都更新,但是呢,这回改在,每个主按钮展开以后都要最近使用,同时,最近使用的命令可以最大允许10个,然后,如果命令名为空,则这个按钮不要显示,占地方也不好看,最近使用需要定义一个变量数量,这样也好方便修改。我现在想再修改一下,就是目前是最近使用的命令在最后一个主按钮下面点击展开,但这样很不方便,想使用最近使用的命令,每次都需要切换点击到最后一个按钮,我现在想,按这样的顺序,原创 2026-01-12 18:16:48 · 42 阅读 · 0 评论 -
AutoCAD插件的子对话框类
这是一个AutoCAD插件的子对话框类,实现了一个可折叠的菜单工具栏。主要功能包括:动态创建菜单按钮、列表显示命令选项、支持鼠标点击和滚动操作、实现"最近使用"命令功能,以及响应AutoCAD的焦点管理消息。原创 2026-01-10 22:45:05 · 62 阅读 · 0 评论 -
菜单终于完工了20260110
菜单原创 2026-01-10 17:23:03 · 34 阅读 · 0 评论 -
现在对话框功能已经写好,需要优化
现在需要优化几个地方,一是关于全局变量,是否有更好的表达方式,比如stack或者map或者其他,目前使用全局struct和map,来对菜单进行读取和保存,二在OnInitDialog和OnSize和引起界面变换比如说滚动鼠标等,按钮和list从4. 计算控件布局参数(安全版)到应用布局,希望所有地方采用与OnInitDialog相同的代码,主要涉及的函数bool loadControlRect();三是初始化时能否清空原来的按钮信息,目前读取line到按钮,后面没启用的按钮依然有数据。原创 2026-01-09 12:48:05 · 86 阅读 · 0 评论 -
【优化BOOL CChildDlg::OnInitDialog(),不使用子函数,所有的功能写到】
请根据头文件,优化BOOL CChildDlg::OnInitDialog(),不使用子函数,所有的功能写到一个函数,要支持c98和c11版本,请先理解现在的功能,功能是,在OnInitDialog中对13个按钮和一个m_listCtrl初始化,按钮和list解析自mList,主要实现。- 动态布局 :根据对话框尺寸自动调整按钮位置,实现自动换行的网格布局。- 状态控制 :为第1个按钮设置不同的箭头状态,指示初始展开状态。- 尺寸获取 :获取对话框和列表控件的尺寸,用于布局计算。原创 2026-01-08 19:20:19 · 55 阅读 · 0 评论 -
这是一个对话框的类,我现在想使用对话框使用
这里定义了13个按钮,是一个对话框里面的,这13个按钮是一个菜单的主按钮,每个按钮点击了以后,都会弹出对应的子菜单,。每个子菜单弹出了以后,出现的其实是一个CMyListCtrl,子菜单的菜单项是CMyListCtrl所展示,你需要了解这个类的工作流程,先给出整个类的完整的实现原理,并给出每一步的详细是实现流程,然后最好给出优化意见,可以使用stl标准库。这是一个对话框的类,我现在想使用对话框使用,代码我给出一个例子。原创 2026-01-07 19:18:28 · 165 阅读 · 0 评论 -
【c++ arx 选项板2】
该代码的主要功能是创建一个自定义的面板集 CMyPaletteSet,并在其中添加一个工具栏子面板 CTunnelSectionPaletteEx。创建一个名为 g_PaletteEx 的新的子面板 CTunnelSectionPaletteEx 对象,并将其设置为可见的子窗口,标题为 “ToolBar”,并将其归属于之前创建的 g_pMyPaletteSet。这将设置面板的左上角为 (0, 0),宽度为 150,高度为 400。将创建的子面板 g_PaletteEx 添加到自定义的面板集中,以便于管理。原创 2024-10-21 22:21:20 · 253 阅读 · 0 评论 -
【c++ arx选项板】
这段代码用于切换选项板的可见性。如果当前选项板是可见的(即 bPaletteExSetVisible 为 true),则将其设置为不可见,并更新 bPaletteExSetVisible 为 false。这段代码定义了一个静态函数 xlArx gmenu,其主要功能是管理一个名为 g_pPaletteSetEx 的选项板的可见性。这两行代码将选项板的可见性设置为 true,并将全局变量 bPaletteExSetVisible 设置为 TRUE,表示选项板当前是可见的。如果为空,表示选项板尚未实例化。原创 2024-10-21 22:03:40 · 281 阅读 · 0 评论 -
为什么PreTranslateMessage里面鼠标点击方式显示对话框里面的控件位置改变比响应控件的点击的common命令要快
当鼠标点击方式显示对话框里的控件时,消息会首先传递到PreTranslateMessage中进行预处理,然后再传递给响应控件的代码。所以在优化程序性能时,我们可以尽量利用PreTranslateMessage做一些预处理操作,减少响应控件的点击的common命令的执行次数,从而提高程序的响应速度。为什么PreTranslateMessage里面鼠标点击方式显示对话框里面的控件位置改变比响应控件的点击的common命令要快。2023/10/22 下午2:17:24。2023/10/22 下午2:17:41。原创 2023-10-24 10:46:18 · 286 阅读 · 0 评论 -
对话框如何屏蔽ok和cancel按键 2023/10/21 上午11:36:08
因此,在 PreTranslateMessage 函数中截获 ESC 键消息的时候,如果焦点在 ListCtrl 控件上,它会先处理该消息,而不会传递给上层窗口(对话框),导致 PreTranslateMessage 函数中的 ESC 键处理代码无法执行。请注意,PreTranslateMessage函数处理的是窗口消息,不会影响到OK和ESC按钮的功能,如果您想完全禁用这两个按钮,可以在创建对话框时设置相应的样式,或者在对话框类中重写OnOK和OnCancel函数,执行自定义的逻辑。原创 2023-10-21 23:19:36 · 409 阅读 · 0 评论 -
是否有可以优化c++代码的charpt 2023/10/20 上午1:16:42
接下来,我显示m_listCtrl,并再次迭代每个列,在curColIndex中按顺序显示curControl以后的按钮,其他列关闭不需要显示的按钮。按钮的显示是以curControl为分界点的,并且应根据btnColum 的值进行分类循环显示,每次显示的按钮为curControl所在的btnColum 列上面,在该列curControl以前的按钮先按顺序显示,然后显示m_listCtrl,然后显示该列curControl以后的,然后关闭其他btnColum 不在curControl所在列的不显示的按钮,原创 2023-10-20 14:12:39 · 191 阅读 · 0 评论 -
CAdUiPaletteSet创建后乱码 2023/10/17 下午11:25:07
2023/10/17 下午11:25:07CAdUiPaletteSet创建后乱码2023/10/17 下午11:25:53对于CAdUiPaletteSet创建后出现乱码的问题,可能有以下几种原因和解决办法:字体设置:检查一下字体设置是否正确。可以尝试更换字体或者调整字体大小,看看是否能够解决乱码问题。字符集设置:确保字符集设置正确。通常情况下,应该选择与当前操作系统相匹配的字符集。编码方式:确认文本的编码方式是否正确。如果是从其他地方复制过来的文本,可能会导致编码不一致,从而引发乱码问题。可原创 2023-10-19 15:35:08 · 458 阅读 · 0 评论 -
【2023/10/16 下午10:32:39】
在上述示例中,我们定义了一个名为 MyPaletteSet 的类继承自 CAdUiPaletteSet,并在该类的构造函数中调用了 SetAllowAutoHide(true) 函数来启用自动隐藏功能。在上面的示例代码中,我们重写了 OnSize 函数,并在函数中使用 GetClientRect 函数获取包含对话框的面板区域 dialogRect,然后使用 MoveWindow 函数调整对话框的大小和位置。在上述示例中,我们重写了 OnTabDragMove 函数,在面板正在拖动时启动定时器。原创 2023-10-17 22:38:27 · 372 阅读 · 0 评论 -
【ListCtrl可以显示一部分吗】2023/10/14 下午1:38:38
如果按钮是可用的并且距上次点击的时间大于指定的间隔,我们执行相应的任务(在这里是显示一个消息框),并更新上次点击的时间。在每次点击事件发生时,你可以比较当前时间和上次点击时间的差值,如果小于你设置的时间间隔,就忽略该次点击。当按钮可用时,即 m_isEnabled 为 TRUE 时,点击按钮会执行相应的任务,并禁用按钮一段时间,防止连续点击。编译和运行该项目后,当你点击对话框中的按钮时,将显示一个消息框并输出"Button clicked."的信息,同时按钮将在一段时间内被禁用,以避免连续点击。原创 2023-10-16 22:23:31 · 428 阅读 · 0 评论 -
c++两个整数相除,如何只入不舍小数 2023/10/7 下午9:27:57
在上述代码中,将整数变量a通过static_cast(a)进行了显式转换为双精度浮点数类型,然后与整数变量b相除,得到的结果result就是保留小数的值。在上述代码中,将整数变量a通过static_cast(a)进行了显式转换为双精度浮点数类型,然后与整数变量b相除,得到的结果result就是保留小数的值。在上述代码中,将整数变量a通过static_cast(a)进行了显式转换为双精度浮点数类型,然后与整数变量b相除,得到的结果result就是保留小数的值。因此,如果需要高精度计算,建议使用其他方法实现。原创 2023-10-11 00:45:37 · 1056 阅读 · 0 评论 -
2023/10/5 下午3:38:53 SCROLLINFO scrollInfo;
上述代码中,我们首先使用GetTopIndex函数获取当前页的第一个可见项的索引,然后使用GetCountPerPage函数获取每页显示的列表项数量。如果你使用的是基于行高进行分页的控件,例如列表或表格,并且设置了行高,那么每页显示的行数将受到行高的影响。在上面的示例中,我们使用 SetFont() 函数将列表控件的字体大小设置为 12 点,从而增加了列表项的高度。调整控件的尺寸:如果你使用的是一个容器控件,比如列表、表格或网格,可以通过设置控件的高度或宽度来改变每页显示的item数量。原创 2023-10-11 00:44:03 · 141 阅读 · 0 评论 -
SCROLLINFO scrollInfo; 2023/10/5 下午3:38:53
上述代码中,我们首先使用GetTopIndex函数获取当前页的第一个可见项的索引,然后使用GetCountPerPage函数获取每页显示的列表项数量。如果你使用的是基于行高进行分页的控件,例如列表或表格,并且设置了行高,那么每页显示的行数将受到行高的影响。在上面的示例中,我们使用 SetFont() 函数将列表控件的字体大小设置为 12 点,从而增加了列表项的高度。调整控件的尺寸:如果你使用的是一个容器控件,比如列表、表格或网格,可以通过设置控件的高度或宽度来改变每页显示的item数量。原创 2023-10-06 16:14:36 · 187 阅读 · 0 评论 -
使用MFC编程时,我给对话框的子窗口设置了垂直滚动条,但点击垂直滚动条没有作用。2023/10/5 上午9:00:56
自定义计算每页显示的item数:如果您的ListCtrl的每个item具有固定的高度,那么您可以根据具体的item高度以及控件的客户区高度来自定义计算每页显示的item数。请注意,以上计算方法假设所有的item的高度相同。如果您的ListCtrl中的item具有不同的高度,那么您需要对每个item的高度进行单独处理。通过以上步骤,你的对话框的垂直滚动条应该可以与子控件的高度相等,并且只更新该子控件的内容了。ListCtrl的每页显示的item数通常是根据控件的尺寸以及每个item的高度计算得出的。原创 2023-10-06 16:11:02 · 699 阅读 · 0 评论 -
#pragma once 2023/9/24 上午11:39:05
2023/9/24 上午11:39:05#pragma once #define _OWNER_DRAWN_TREE // 自绘CTreeCtrl,可支持背景图片显示功能 class CSWTreeCtrl : public CTreeCtrl{ DECLARE_DYNAMIC(CSWTreeCtrl) // 成员私有结构定义 // 构造/析构函数public: CSWTreeCtrl(); virtual ~CSWTreeCtrl(); // 私有成员变量priv原创 2023-10-05 08:53:07 · 261 阅读 · 0 评论 -
pDC->BitBlt( pt.x, pt.y, 16, 16, &dcMem, 0, 0, SRCAND ) 2023/9/24 上午11:17:46
然后使用 m_imgBtns.Create(bmp.bmWidth / 2, bmp.bmHeight, ILC_COLOR32 | ILC_MASK, 2, 1) 创建一个新的图像列表,其中参数 bmp.bmWidth / 2 表示每个图像的宽度为原位图的一半,bmp.bmHeight 表示图像的高度与原位图相同,ILC_COLOR32 | ILC_MASK 指定图像列表支持32位颜色和掩码,2 表示预留两个图像的空间,1 表示初始最多可存放一个图像。接下来,根据按钮区域的位置计算箭头的坐标。原创 2023-10-05 08:47:30 · 288 阅读 · 0 评论 -
SetWindowPos 2023/9/19 下午11:31:13
hWndInsertAfter:指定在Z序中的窗口的位置。uFlags:指定窗口大小和位置的标志位,比如SWP_NOMOVE表示不改变位置,SWP_NOSIZE表示不改变大小。调用SetWindowPos函数可以动态地修改窗口的位置和大小,例如将窗口移动到指定的屏幕坐标位置或者改变窗口的大小。SetWindowPos函数是Windows操作系统提供的一个函数,用于设置窗口的位置和大小。hWnd:要设置位置的窗口的句柄(handle)。X:窗口的新左上角的x坐标。Y:窗口的新左上角的y坐标。原创 2023-10-04 23:17:19 · 220 阅读 · 0 评论 -
sqlite3的lib和头文件在哪下载 2023/9/19 上午10:46:43
如果你的需求是只使用 SQLite 的静态库而无需 DLL,你可以尝试使用第三方提供的静态库版本,例如 SQLite Amalgamation。请确保在编译和链接你的项目时,正确地指定静态库文件并链接SQLite库,以便使用SQLite功能。非常抱歉,我之前的回答可能有误导。请注意,在使用SQLite时,你需要根据你的编程语言和开发环境配置相应的编译设置,以便正确地链接SQLite库并包含头文件。请注意,SQLite 官方网站提供了许多其他平台的预编译二进制文件,你可以根据你的需求选择适合的版本进行下载。原创 2023-10-04 23:16:35 · 1868 阅读 · 0 评论 -
CListCtrl设置只显示单列 2023/9/5 下午4:07:05
在上述示例中,我们假设你的对话框中有一个名为 IDC_LIST_CONTROL 的列表控件(可以根据实际情况修改),我们通过 GetDlgItem 函数获取该控件,并使用 GetScrollBarCtrl 函数获取垂直滚动条的指针。在上述示例中,我们假设你的对话框中有一个名为 IDC_LIST_CONTROL 的列表控件(可以根据实际情况修改),我们通过 GetDlgItem 函数获取该控件的指针,并根据 zDelta 参数判断滚轮是向前滚动还是向后滚动,然后执行相应的操作,比如调整列表项的显示。原创 2023-10-04 23:15:25 · 698 阅读 · 0 评论 -
CAcUiDockControlBar初始位置 2023/8/19 下午3:51:18
使用Create函数:在创建CAcUiDockControlBar对象时,可以调用Create函数并设置相应的风格参数来指定其初始化位置在左侧。使用布局管理器:如果使用了MFC的布局管理器(如CFormView或CDialog),则可以通过在布局管理器中设置CAcUiDockControlBar的位置属性来控制其初始位置。使用布局管理器:如果程序使用MFC的布局管理器(如CFormView或CDialog),可以通过在布局管理器中设置CAcUiDockControlBar的位置属性,将其放置在左侧。原创 2023-10-04 23:08:06 · 233 阅读 · 0 评论 -
CAcUiDockControlBar初始位置 2023/8/19 下午3:51:18
使用Create函数:在创建CAcUiDockControlBar对象时,可以调用Create函数并设置相应的风格参数来指定其初始化位置在左侧。使用布局管理器:如果使用了MFC的布局管理器(如CFormView或CDialog),则可以通过在布局管理器中设置CAcUiDockControlBar的位置属性来控制其初始位置。使用布局管理器:如果程序使用MFC的布局管理器(如CFormView或CDialog),可以通过在布局管理器中设置CAcUiDockControlBar的位置属性,将其放置在左侧。原创 2023-10-04 23:07:26 · 756 阅读 · 0 评论 -
【oncmdmsg 鼠标】2023/8/19 上午9:50:14
当用户操作界面上的控件(比如按钮或菜单项)时,这些控件会发送命令消息给窗口,在窗口的消息映射表中,可以使用 OnCmdMsg 函数来捕获和处理这些命令消息。在上面的示例中,我们首先调用 GetCursorPos 函数获取鼠标的屏幕坐标,然后使用 ScreenToClient 函数将屏幕坐标转换为窗口的客户区坐标。例如,您可以根据鼠标的位置来更新界面显示,或者根据鼠标的状态来执行相应的操作。在 MFC 中,OnCmdMsg 函数主要用于处理菜单和工具栏的命令消息,并不直接与按钮的鼠标事件相关。原创 2023-10-04 23:06:21 · 1272 阅读 · 0 评论 -
treectrl类封装 2023/8/13 下午4:07:35
以上示例是一个简单的封装,你可以根据自己的需求扩展和修改该类的功能。注意在使用 TreeCtrl 类时需要包含 afxwin.h 头文件,并将代码添加到 MFC 框架中的合适位置(如对话框类或窗口类)。TreeCtrl 类是 MFC(Microsoft Foundation Classes)库中的一个封装类,用于支持创建和操作树状结构的控件。2023/8/13 下午4:07:35。2023/8/13 下午4:07:53。2023/8/13 下午4:08:20。2023/8/13 下午4:09:15。原创 2023-10-04 23:03:31 · 779 阅读 · 0 评论 -
2023/8/8 下午10:42:04 objectarx
通过ObjectARX,开发者可以访问AutoCAD的内部对象模型,包括图形实体、图层、块等,并能够创建新的实体、修改现有实体、操纵图形对象等。这只是一个简单的概述,详细的 ObjectARX 开发流程和具体的功能实现将根据你的项目需求而有所不同。在进行函数封装时,需要熟悉ObjectARX的API文档和开发指南,了解可用的函数和类,以及它们的参数和返回值。请根据实际需求进行适当修改和扩展代码。此示例仅提供了基本的图层功能实现,更复杂的操作可能需要进一步研究和学习ObjectARX的API文档和示例代码。原创 2023-10-04 23:02:10 · 851 阅读 · 0 评论
分享