1.源码阅读忆丛(37)Minigui
2.exe文件源码在哪里看?
3.Web 版 VS Code 上线:最好用的微软 IDE 终于发布网页版,然而微软发完秒删
源码阅读忆丛(37)Minigui
探索GUI的导航历史与实现
对于GUI的细节仍然存在一些困惑,似乎总是源码有新的东西需要学习。年轻时,微软对《Windows程序设计》、导航MFC等书籍充满热情,源码麻将源码 闲来那些API的微软神奇之处让人着迷。然而,导航花费大量时间深入学习,源码却似乎事倍功半,微软微软似乎更倾向于教人如何使用,导航而非深入解释实现原理。源码尽管如此,微软还是导航尝试实现过文字版的GUI,涉及基本的源码按钮、滚动条、菜单等元素。但一些细节仍不清楚。
通过网络搜索,了解到魏永明的跑腿开源系统源码Minigui项目是对Windows GUI和GDI的模仿。通过下载vc6版本的MinGUI,能够进行调试。在分析代码时,发现事件回调、消息链等常见功能并无特别之处。而DefaultMainWinProc、InvalidateRect、PopupMenuTrackProc等函数则更具实际意义。GUI就像是在显存沙漠中绘画,有其既定规则。DefaultMainWinProc负责实现画最大、最小按钮、窗口方框等常规操作,而绘制的动作有其先后顺序,即消息的先后处理。
GDI部分则展示了如何在显存中书写文字,包括粗体、斜体等效果;如何绘制图标和位图;关键的rgn裁剪矩形技术,用于加速绘制,html怎么源码校验矩形外的绘制不会进行。rgn裁剪矩形的运算包括加、减、合、并等,对应着窗口的各种移动和形状改变。不同线程之间的窗口管理由HWND_DESKTOP统一处理,desktop-common.c相当于窗口管理器,不同程序无法直接获取其他窗口的位置和大小,由其进行统一管理。desktop包含三个线程,分别负责捕捉键盘、鼠标消息,以及实际消息的处理,以及窗口给desktop的消息交由DesktopWinProc统一处理。
MinGUI的模拟版本在调试方面虽能使用,但功能实现上有缺失。相比之下,libminigui-1.0.提供了完整的源码精灵获得蛋gui、gdi、kernel代码,定义了大部分的画窗套路和动作,只需要关注关键部分和自己定义的动作即可。
Linux的GUI采用了xwindows,通过socket将xclient进程中的窗口绘制信息传输到xserver,由xserver统一处理。xclient之间互相不知道窗口的位置和大小,因此都通过xserver进行绘制,xserver还包含了窗口管理器。而MinGUI在一个进程的多个线程中实现,不存在窗口管理器与进程间位置信息传递的问题。
Windows使用wink.sys作为窗口管理器,作为内核态程序,用户态的动态链接库在不同进程间数据段不同,但内核态的数据段统一,因此实现了窗口管理。Windows显示流畅的原因之一在于窗口管理机制与MinGUI的desktop类似,但实现机制有所不同。ygbook带听书源码
工作繁忙,业余时间进行学习。尽管以前对GUI有过大量无用功,但这次的探索仅用几天时间便有所收获。
exe文件源码在哪里看?
1. 首先,在搜索引擎中查找并下载ILSpy这一.NET反编译工具。ILSpy是一个开源的.NET反编译器,使用便捷。下载并解压后,你会看到如图所示的界面,双击.exe文件以打开解压工具。
2. 接下来,选择“File”菜单,点击“Open”按钮,选取你想反编译的文件,然后点击“Open”,这样就能看到源代码了!
3. 如果你想保存源代码以便在此基础上进行修改,点击“File”菜单下的“Save code...”按钮进行保存。保存后的文件如图所示。
4. 如果你想用Microsoft Visual Studio(简称VS)打开反编译后的源代码,只需打开这个.csproj文件即可。VS是由美国微软公司推出的开发工具包系列产品,它是一个包含大部分软件生命周期所需工具的完整开发工具集,包括UML工具、代码管控工具、集成开发环境(IDE)等等。VS支持的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.Net Core、.NET Compact Framework、Silverlight及Windows Phone。
完成以上步骤,你就算是大功告成了!
Web 版 VS Code 上线:最好用的 IDE 终于发布网页版,然而微软发完秒删
微软似乎「官宣」了编辑器 Visual Studio Code 的 Web 版本,但又很快删除了博客。这一动态引起了开发者社区的热议。微软在 Azure 产品更新列表中介绍了这项新服务,但内容很快被删除。这个基于 Web 的编辑器服务与 GitHub 的版本相似,允许任何 GitHub 用户导航到文件和源代码存储库,进行代码更改和提交,以及在编辑器中打开存储库、分支或拉取请求。使用免费的 Web 编辑器服务,可以在 vscode.dev 免费使用 VS Code for the Web 来快速打开和浏览托管在 GitHub 和本地机器(以及很快会在 Azure Repos 上)上的源代码,并提交轻量级的更改。VS Code for the Web 的优势在于方便性,特别是对于在不同设备上工作的情况。由于 VS Code 是使用 Web 技术构建的,这些 Web 变体相对容易实现。在被删除的内容中,微软表示每个人都可以在 vscode.dev 免费使用 VS Code for the Web。尽管内容已被删除,但开发者们对可能即将回归的「Visual Studio Code for the Web」保持期待。
VS Code 一直是开发者心目中的生产力神器。桌面版 VS Code 也是免费的,并且功能更强大,而用于 Web 的 VS Code 的优势在于方便性。这种线上的、零安装的解决方案非常适合不同设备上的工作,避免了下载 - 编辑 - 上传周期的繁琐过程。由于 VS Code 是使用 Web 技术构建的,因此 Web 变体相对容易实现。微软的工程师 Erich Gamma 描述了 VS Code 如何起源于一个名为 Visual Studio Online 或「Monaco」的失败的 Web 编辑器项目。现在,远程开发更加复杂,GitHub Codespaces 和 Gitpod 等环境提供了基于浏览器的远程运行代码编辑和调试的解决方案。
GitHub 在去年 5 月宣布了 Codespaces,允许开发者在云端使用 VS Code 进行代码编译,无论是在手机还是平板上都可以随时随地进行开发。Codespaces 运营一年多后,GitHub 宣布其工程团队已经从以 macOS 为中心的开发模式转移到了 Codespaces。在新公告中,微软表示「VS Code for the Web 可以升级到 GitHub Codespaces 实例」,适用于需要完整远程环境、构建、调试、充分使用扩展和访问终端的情况。尽管 VS Code for the Web 无法构建、运行或调试应用程序,也无法访问集成终端,但它更多地是将浏览器用作编辑代码的沙箱。Web 应用程序仅适用于远程存储库,不适用于本地代码。
Web 版本的 VS Code 为随时随地办公制造了便利条件,许多抢先试用的开发者表示,Web 版本「接近 Visual Studio 桌面版的体验」。从类似功能的 GitHub Codespaces 来看,浏览器内的体验对于不需要这些功能的情况也是高效的,尽管偶尔会显示「在此配置下无法工作」的误导性消息。对于喜欢 VS Code 的开发者,有许多插件和技巧可以提高效率。例如,超强大的 款插件、 年 VS Code 必备的8个 Python 插件、GitHub 原生 AI 代码生成工具、Python 开发者必备的5款 VScode 拓展工具包、个超级好用的 VScode 使用技巧以及被低估但功能非常强大的 8 个 VSCode 插件。收藏并学习这些资源,可以进一步提升 VS Code 的使用体验。