CDesktop类的开工~

CC Desktop:基于Claude Code CLI的桌面AI编程工作台深度解析 在AI辅助编程领域,如何将强大的命令行工具无缝集成到可视化工作流中,是提升开发者效率的关键。其核心原理在于通过进程间通信(IPC)和伪终端(PTY)技术,将本地开发环境与AI模型能力深度桥接。这种技术架构的价值在于,它打破了传统终端与图形界面的壁垒,实现了开发状态的持久化与AI交互的流畅性。典型的应用场景包括代码生成与调试、复杂问题排查以及项目知识库的沉淀。本文聚焦的CC Desktop项目,正是这一理念的工程实践典范。它通过Electron框架,将Claude Code CLI升级为一个集终端、AI对话和 阅读详情

CDesktop类负责处理窗口们。当一个窗口CreateWin以后,再在Window上面Add一些Control,把它Add到CDesktop里面就算完事了。当然在Add之前可以酌情保留其指针方便控制,也可以用CDesktop类的FindWindow()函数查找指定Name的Window,返回其指针再对其操作。而绘制桌面窗口的时候只需把desktop变量的指针传递给CGraph的RenderDesktop()函数即可绘画出所有的窗口及其子控件。真是方便之极。难免自己要先陶醉一下。

在CDesktop里面,我用到了STL,标准模板库。

#include <list>
using namespace std;

用了其中的list容器,来保存add函数传递来的窗口句柄。

list<CWin*> m_pWinList;

每当传进新的窗口句柄,就把他压入list容器的前面. (push_front)。

m_pWinList.push_front(pNewWin);

先规范一下窗体处理的顺序问题。
一般来说,绘画窗体是按照窗体的ZOrder循序,处于最上层的窗口最后绘画,以遮盖下层的窗口。因此定义如下规则:

1. 最前的窗口处于list容器的前端( front, begin() )
2. 处理绘画函数从list容器的后端开始逐个窗体绘画.
// 绘画所有窗口
bool CDesktop::Draw(IDirectDrawSurface * lpDDS, LPRECT lpRect)
{
 if ( m_pWinList.empty() )
  return false;

 m_pWinIterator = m_pWinList.end();

 do {
    // 遍历所有表内元素, 执行Draw
    m_pWinIterator -- ;
    (*m_pWinIterator)->Draw( lpDDS, lpRect );
 } while ( m_pWinIterator != m_pWinList.begin() );
   return true;
}
3. 处理消息函数从list容器的前端开始逐个测试传递.


因为把窗体初始化的代码单独拿了出来,所以要注意一个问题:

当切换全屏/窗口模式的时候,会释放掉旧的DirectDraw。那么旧的DirectDraw所建立的Surface同样会失效。所以,Desktop同样要在切换模式之前执行释放函数把所有的子窗体释放掉,待重新初始化DirectDraw后再重新初始化窗体。否则,窗体所保存的surface指针指向的将不会再是一个有效的DirectDrawSurface。这个问题花了我几乎一个小时去debug。得益于远程调试,两台机器并用能够一边看代码一边调试,否则切换成全屏就不能看到代码这个问题有排烦了。途中顺便也把之前提到可能的访问异常去掉了。原来CSurface没有把lpDDS初始化为NULL而使到释放宏不能判断指针的有效性,直接执行了一个无效的Release()操作。这是一个低级的错误,sigh。

好,继续完善。

Claude Desktop 个性化设置:主题、快捷键、通知与性能优化 本文详解 Claude Desktop 个性化配置,涵盖主题、快捷键、通知、显示、性能与存储六大模块。推荐主题设为“System”自动切换,重点启用 Cmd/Ctrl + K 快速唤起(Quick Entry),提升效率;通知仅保留“任务完成”与“审批请求”;界面设为 Compact 以多显对话,开机自启保障常驻流畅。配合定期清理历史、指定下载目录、清缓存等操作,实现从“能用”到“顺手”的跃升。设置清单可直接照抄,十分钟完成优化,让 Claude 深度融入工作流。 阅读详情

相关推荐

使用Java操作桌面应用——Desktop类

综上所述,通过使用Java的Desktop类,我们可以方便地操作桌面应用程序,包括打开文件、打开URL、编辑文件等。类是一个非常有用的类,它允许我们打开文件、打开URL、编辑文件等操作。一旦我们确定了桌面操作是受支持的,我们就可以使用Desktop类的方法来执行各种操作。在上面的示例中,我们首先创建一个File对象,指定要打开的文件的路径。然后,我们使用Desktop类的。在上面的示例中,我们创建了一个File对象,指定要编辑的文件的路径。在上面的示例中,我们创建了一个URI对象,指定要打开的URL。

DevGlider的博客 647

Java Desktop类使用详解

Java Desktop类使用

qq_43837032的博客 1462

threekingdoms.txt中文三国演义下载及实现人物出场统计

threekingdoms.txt全文下载:https://python123.io/resources/pye/threekingdoms.txt CalThreeKingdomsV1.py: #CalThreeKingdomsV1.py import jieba txt = open("threekingdoms.txt", "r", encoding = "utf-8").read() words = jieba.lcut(txt) counts = {} for word in words:

ZYYRWish_97的博客 1万+

Java中Desktop类浅析

Desktop 类是java的桌面类,可以启动程序,是jdk 1.6 时发布的,位于 java.awt 包下。

ldcaws的专栏 2584

【BLE系列-第六篇】GATT解析:属性、特征、描述符的逻辑关系

本文系统介绍了BLE协议中的ATT和GATT机制。ATT以"属性"为基本数据单元,包含UUID、Handle、权限和Value四个要素。GATT则在ATT基础上构建了服务、特征和描述符的层次结构:服务(UUID:0x2800/0x2801)通过声明属性标识,特征声明(UUID:0x2803)指向特征值(UUID:0x2Axx或自定义),描述符(UUID:0x2900~0x290F)提供附加信息。GATT复用ATT发现机制,通过定义特定UUID语义实现服务发现和特征管理。这种设计使BLE设

qq_43399763的博客 1929

UE4游戏逆向实战:从HOOK明文包到自定义发包的完整流程(附加密算法解析)

本文详细解析了UE4游戏网络通信的逆向工程完整流程。从定位线程发包点、HOOK拦截明文封包,到逆向分析加密解密算法,最终实现自定义组包与加密发送。文章结合实战案例,为游戏安全研究和技术人员提供了一套清晰、可操作的方法论。

weixin_29009081的博客 1236

API--16-- Desktop桌面类

Desktop 桌面类 Desktop 类是java的桌面类,可以启动程序,是jdk 1.6 时发布的,位于 java.awt 包下。 支持以下几种功能: open 打开文件 edit 编辑文件 print 打印文件 mail 发送邮件 browse 浏览器打开网址 代码中体现为: Action 枚举 单例模式的, 私有化构造器 需要静态方法 getDesktop() 来构建实例化对象 Desktop desktop=Desktop.getDesktop(); 在使用的时候,最好先验证一下

时光里的博客 1221

IEEE LaTeX模板中algorithm排版避坑指南:如何优雅地嵌入算法描述?

本文详细解析了在IEEE LaTeX模板中优雅排版algorithm的实用技巧,包括基础配置、高级自定义及常见问题解决方案。通过嵌套环境与[H]参数的应用,帮助研究者克服IEEEtran模板对算法排版的限制,实现专业且美观的算法呈现。

weixin_28340315的博客 408

claude code和c desktop 更新后新增了模型 ID 白名单过滤机制 解决方法

本文介绍了如何通过CCSwitch和ClaudeDesktop配置DeepSeek API的步骤:首先在CCSwitch中选择DS供应商,填写DeepSeek官方API地址(https://api.deepseek.com/anthropic),获取模型列表后进入ClaudeDesktop进行第三方配置,填写CCSwitch服务地址和API Key,开启模型发现并创建以"claude"开头的模型前缀,最后保存退出即可完成设置。

b1300171496的博客 265

一文详解本地知识库RAG(检索增强):LangChain + Hugging Face 三件套 + 本地大模型 + MCP 协议 + Chroma + Agent 全流程实战

模型上下文协议(MCP)是 Anthropic 推出的开放标准,基于 JSON-RPC 2.0,为 AI 应用与外部工具/数据源之间提供统一的双向通信协议,被称为“AI 应用的 USB-C”。LangChain 是一个围绕 LLM、提示模板(Prompts)、记忆(Memory)、链(Chains)、工具(Tools)和代理(Agents)等组件打造的开源框架,旨在简化复杂自然语言应用的开发。:任意可调用的功能或服务(API、数据库查询、本地函数等),由 Agent 或 Chain 在推理过程中调用。

weixin_41645791的博客 1425

Ubuntu 22.04下Nvidia显卡驱动安装全攻略:从PPA源到避坑指南

本文详细介绍了在Ubuntu 22.04系统下安装Nvidia显卡驱动的完整流程,包括PPA源的使用、旧驱动清理、安装后验证及常见问题解决方案。特别针对机器学习开发者和图形设计师,提供了从基础安装到性能调优的全方位指南,帮助用户避免常见安装陷阱并优化GPU性能。

weixin_29213655的博客 382

Java实现打开某个文件 —— Desktop类

Java实现打开某个文件一、可能用到的类和方法类 java.io.File java.io.IOException java.awt.Desktop 注:java.awt.Desktop类仅支持1.6以上Java版本。方法 public File(String pathname) 调用File类构造方法创建文件对象,参数pathName为文件绝对路径。 如果这

逍遥在南方的博客 4617

WiFi基本概念(六)(L-STF,L-LTF)

L-STF它由10个OFDM symbol(1,0,1,0,1,0,1,0,1,0)构成,每个symbol是0.8us,GI是0.2us,总计10us。Symbol的长度是正常长度的1/4,因此称为Short training field,主要用于快速进行信号检测,信号同步,自动增益控制,接收天线选择(Diversity Selection)。 由于symbol长度是正常的1/4,子载波的宽度是正常的4倍,能进行初略的信道估计,其使用了-24, -20, -16, -12, -8, -4, 4, 8, 1

reekyli的专栏 6863

JDK6的新特性之一:Desktop类和SystemTray类

在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray,前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序.下面代码演示了Desktop和SystemTray的用法./** * * @author 

Stone的专栏 1379

畅游Diffusion数字人(20):FLAME代码解读与实现

​ 之前的博客《畅游Diffusion数字人(17):更强大的人脸和表情表达方法 FLAME:Learning a model of facial shape and expression》讲解了FLAME的原理,这篇博客主要讲解一下FLAME的代码实现。

沉迷单车的追风少年 1133

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JDK6新特性之一 Desktop类和SystemTray类

1 Desktop类和SystemTray类 在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray,前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序.下面代码演示了Desktop和SystemT

Janty_wei的专栏 1959

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java desktop类_Java中的DeskTop类使用介绍

在Jdk1.6以后新增加了一个类--DeskTop,在JDK中它的解释是这样的:TheDesktopclass allows a Java application to launch associated applications registered on the native desktop to handle aURIor a file.Supported operations in...

weixin_28809949的博客 965

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java中的DeskTop类

在Jdk1.6以后新增加了一个类--DeskTop,在JDK中它的解释是这样的:The Desktop class allows a Java application to launch associated applications registered on the native desktop to handle a URI or a file. Supported operations i

张勤一 4678

Desktop桌面类的使用(十)

忽然发现,游戏并没有那么好玩,真正好玩的是什么? 人心。 而如何避免别人玩弄你的心,那就是让别人不敢玩弄你的心,代价是付不起的。 人神之恋,开始了。 上一章简单介绍了Java程序启动QQ(九),如果没有看过,请观看上一章 参考文章: https://blog.youkuaiyun.com/dlutbrucezhang/article/details/9731947 一. Desktop 类 Desktop ...

两个蝴蝶飞 3144

java desktop_Java中的DeskTop类使用介绍

在Jdk1.6以后新增加了一个类--DeskTop,在JDK中它的解释是这样的:TheDesktopclass allows a Java application to launch associated applications registered on the native desktop to handle aURIor a file.Supported operations includ...

weixin_31504783的博客 450

Java SE 6 新特性之一 Desktop类和SystemTray类

在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray,前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托盘程序.下面代码演示了Desktop和SystemTray的用法. [code="java"...

geshenyisunjie的博客 173

Java中Desktop类和批量在浏览器打开URI

Java中Desktop类的认识和批量在浏览器打开URI

iaiti的专栏 2452

java desktop类_Java中的DeskTop类

在Jdk1.6以后新增加了一个类--DeskTop,在JDK中它的解释是这样的:The Desktop class allows a Java application to launch associated applications registered on the native desktop to handle a URI or a file.Supported operations in...

weixin_42436686的博客 211

System.getProperties参数列表

 JAVA.version JAVA 运行时环境版本 JAVA.vendor JAVA 运行时环境供应商 JAVA.vendor.url JAVA 供应商的 URL JAVA.home JAVA 安装目录 JAVA.vm.specification.version JAVA 虚拟机规范版本 JAVA.vm.specification.vendor JAVA 虚拟机规范供应商 JAVA.vm.spe

清风徐来,水波不兴--郭见伟的blog 2048

DeskTop类介绍

DeskTop类允许一个Java应用程序启动本地的另一个应用程序去处理URI或文件请求,这个类中包含了如下的几个方法:    1.启动用户默认的浏览器显示指定的URI链接    2.启动用户默认的邮件客户端发送URI指定的邮件    3.启动一个注册应用程序(本地安装了的应用程序)去打开,编辑或打印一个指定的文件 其中最重要的,也是最实用的就是启动浏览器显示指定的URL连接,常常使用在动作...

RK 3613
上一篇: DirectInput里的键盘鼠标的应用
下一篇: Class们的分工合作安排,消息的传递。
Garfield
博客等级 码龄26年 24粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值