精华内容
下载资源
问答
  • windows客户端开发需要什么框架
    2021-09-30 11:12:28

    https://xylt.github.io/windows-ui/

    Qt – 跨平台的软件开发工具包

    wps
    yy语音

    Electron – 用前端的知识来开发桌面应用

    vscode

    更多相关内容
  • 桌面客户端开发框架技术选型

    万次阅读 2021-02-14 23:00:35
    C/S 架构是软件产品的主流,后面渐渐地被 B/S 架构所取代(因为不需要配置客户端),但由于浏览器有刷新机制,服务器的负载等因素,C/S 架构的响应速度和流畅性是好于 B/S 架构的,所以现在软件开发的趋势是两者的...

    https://static001.infoq.cn/resource/image/ac/06/acd31d24679f4f819153aafdaa7b0506.jpg

    互联网出现之前,C/S 架构是软件产品的主流,后面渐渐地被 B/S 架构所取代(因为不需要配置客户端),但由于浏览器有刷新机制,服务器的负载等因素,C/S 架构的响应速度和流畅性是好于 B/S 架构的,所以现在软件开发的趋势是两者的融合,一般是 B/S 架构开发的产品可以非常方便地转移到 C/S 架构下。客户端(client)是 C/S 架构软件产品中重要的一部分,除了和用户交互、本地处理数据的强大功能,顺畅的体验和美观的样式也是客户端技术追求的目标。这里和大家介绍桌面版应用程序的一些历史和现在比较流行的 electron 技术。

    桌面版应用程序历史

    桌面应用程序,又称为 GUI 程序。可以分为以下几个阶段:

    • VB,上古程序员的开发工具,曾经全球第一的开发语言,拖拽式的图形化开发让它成为极佳的桌面开发工具。微软依靠其操作系统的优势,一直压制同时期的竞争对手 delphi。微策略早期应用该技术,开发了管理智能商务平台的大杀器 developer。
    • C++、win32API 的 MFC 方案是基于窗口中组合控件和消息传递机制。这也是 20 多年前的技术,所以 API 设计的不是很友好。几年前微软已经停止维护,简单来说它已经过时了。
    • Winform 微策略几年前基于该技术研发第一代的 Desktop 版本,但是从开发体验角度来说自定义、美化控件会比较麻烦。
    • C# .net framework,代表就是 WPF,它的原生特性是其他类库无法比拟的:High DPI、Split Screen 以及对 DirectX 的天然优势。但是并不开源,需要依赖.net 框架,还有就是启动会比较慢。Workstation Windows 的新客户端就是基于该技术研发。
    • Java swing/javaFx,这是一类比较大的阵营,优势是跨平台和流行开发语言 Java 的天然结合,但开发出来的界面作者个人认为并不美观。
    • C++ Qt,这是很多客户端跨平台的首选,因为开源、UI 库和各种功能的类库非常丰富,但是学习成本比较高。
    • C++ duilib,这是 windows 下开源的 directUI(微软提出的分离 UI 和逻辑的思想)库,它是迎合互联网桌面软件小而美的趋势发展起来的,可能大家对它的关注度比较少。但是用它开发出的产品大名鼎鼎,比如 QQ、微信、爱奇艺等很多知名度高的软件。
    • Objective-c/swift cocoa,这是 mac 平台下的方案。可以方便调用底层的 API,缺点是不跨平台,文档不友好,UI 库并不丰富。现在这种方式开发的越来越少了。

    基于 Web 技术的桌面应用开发

    从 B/S 和 C/S 架构逐渐融合的角度来说,基于 Web 技术进行桌面程序的开发渐渐变成了主流。因为对界面的代码部分可以做到复用。

    这类技术早期的方案是用 vb 内嵌 webBrowser 控件,基于 IE 内核,正好很多网页开发也有用 activeX 的需求,但这种方式具有明显的缺陷——非常依赖于用户的环境,会因为组件缺失导致程序各种崩溃。第二类是嵌入式网页框架,这类技术主要是基于浏览器引擎实现 UI 渲染。比较典型的就是 appkit 上面 UIWebView 和 CEF(chro-mium embeded framework)。这种方法可以使用网页 HTML5+CSS 实现各种酷炫的效果,但是缺点也比较明显,就是桌面程序里面嵌入了一个类似 Chrome 的浏览器,内存的开销会比较大。

    后面出现了 nwjs 和 electron,electron 相比 CEF 有了单独执行 js 的 v8 引擎,可以运行 NodeJS 来完成服务器端功能,通过和内部浏览器的 v8 引擎交互可以实现一个独立的客户端,这不同于 CEF 需要寄宿在其他程序内部。

    Electron

    https://static001.infoq.cn/resource/image/82/71/8230406c39089c55996ec023fc553871.png

    用 Electron 来做桌面程序开发的优势明显,相当于是完全的网页编程,有 Web 开发经验的前端开发上手非常容易。Web 开发生态广泛,开发成本低,可扩展性强,一些流行的前端框架例如 React、Angular、Vue 都可以和 electron 结合进行开发。另外它也具备和 Qt 一样跨平台的优良特性。对性能要求不高的桌面版程序来说,一份代码同时得到网页版和各个平台的桌面版,开发的效率是其他方案无法比的。可以说,这是大部分人看好的趋势。

    和 Web 开发的区别

    前端开发的一个痛点就是经常需要考虑多种浏览器之间的兼容,但是使用 electron 开发则不存在这样的问题,它只需要考虑 electron 中对应 Chrome 的版本。另一个使用 electron 解决的痛点是跨域,它可以绕过客户端直接通过 NodeJS 里的 request 通信模块发出请求,这样就无需被跨域所困扰。

    扩展能力

    node-ffi 可以在 NodeJS 环境中调用动态链接库接口。通过这种方式,我们可以把 JavaScript 方法映射到动态链接库接口,从而实现 C++ 类库的接入。

    Electron 运行原理

    https://static001.infoq.cn/resource/image/39/47/39c7055c50f9ec4e2918c74e60f12c47.png

    Electron 的运行机制可以从两种进程说起:主进程和渲染进程。运行 package.json 的称为主进程,它可以负责创建渲染进程(多个)。下图是一段主进程代码,主进程负责创建一个浏览器实例来加载网页。每个创建的浏览器实例都在它自己的渲染进程内返回一个 Web 页面。当 BrowserWindow 实例销毁时,相应的渲染进程也会终止。主进程负责掌管所有的 Web 页面和它们相应的渲染进程。每个渲染进程都是相互独立的,它们只关心自己所运行的 Web 页面。

    const electron = require('electron');const app = electron.app;const BrowserWindow = electron.BrowserWindow;var window = null;app.on('ready', function() { window = new BrowserWindow({width: 800, height: 600}); window.loadURL('<https://microstrategy.com>');});

    复制代码

    主进程还负责应用程序的生命周期(app 打开退出)和一些 app 事件的监听,同时负责系统底层 API 的调用。创建的渲染进程用来展示 HTML + CSS 技术编写的 Web 页面, 同时可以运行 JavaScript 实现交互,可以把渲染进程简单理解为 Chrome 上打开的一个浏览器进程。

    <html> <body> <script> const remote = require('electron').remote; console.log(remote.app.getVersion()); </script> </body></html>

    复制代码

    在渲染进程中是不允许调用原生 GUI 相关的 API,那是因为在网页中掌管原生 GUI 很危险,易造成内存泄露。如果你想在网页中进行 GUI 的操作,渲染进程必须向主进程传达请求,然后在主进程中完成操作。

    Electron 封装了一系列自己的 API 可供主进程和渲染进程调用。可以通过如下方式获取:

    const {app, BrowserWindow, ipcMain, ... } = require('electron'); // 仅主进程可用const {ipcRender, remote, ... } = require('electron'); // 仅渲染进程可用

    复制代码

    主进程和渲染进程均可直接调用 NodeJS 的 API:

    node1.addEventListener('click', () => { console.log(os.path.basename('xxxx');})

    复制代码

    进程通信

    渲染进程如何向主进程发送消息

    通信本质上基于 nodeJS 的事件基础类 Event-Emitter,ipcMain 和 ipcRender 都是该类的实例,通过事件模型需要的接口方法,采用了发布 / 订阅的方式来发送和监听消息。

    异步方式:

    import { ipcRender } from 'electron'; // 在渲染进程引入 ipcRender,它是 EventEmitter 的一个实例ipcRender.send('async', 'I am from webview'); // 可以异步发送

    复制代码

    同步方式:

    import { ipcRender } from 'electron'; // 在渲染进程引入 ipcRenderipcRender.sendSync('sync', 'I am sync sent from webview'); // 同步方式

    复制代码

    通过同步方式发送会 block 整个渲染进程,直到主进程响应。

    主进程会加载 ipcMain 来进行监听。

    import { ipcMain } from 'electron'; // 在主进程引入 ipcMainipcMain.on('async', (event, info) { console.log(info);});

    复制代码

    除此以外, electron 还提供了一种简单的方案(remote 模块)来实现渲染进程和主进程的通信。这样就可以不必显示地发送消息。

    import { remote } from 'electron'; // 在渲染进程引入 remoteremote.mainProcessObject.invokeMethod(); // 调用主进程才有的方法});

    复制代码

    主进程如何向渲染进程发送消息

    主进程通过找到渲染进程对应的 browserWindow 就可以发送消息。

    constant window = BrowserWindow.fromId(global.id); // 通过 id 来进行对应window.webContents.send('msg', 'hello world');

    复制代码

    渲染进程监听:

    ipcRender.on('msg', (event, info) => { console.log(info)});

    复制代码

    渲染进程之间共享数据

    一种可行的方案是在主进程实现消息的转发。还有比较简单的方案是通过浏览器实现的 HTML API,比如 localStorage, sessionStorage 或者 IndexedDB,或者通过主进程创建全局变量 sharedObject 来实现渲染进程的数据共享。

    以上是一些 electron 技术的初步介绍,有兴趣的读者可以继续阅读详细的官方文档来深入学习。目前来看 electron 不能算一个年轻的开源项目, 还有不少新的桌面替代技术在涌现(比如 miniblink)。

    作者介绍:

    徐瑞青,高级软件工程师,毕业于鲁汶大学电子工程系。2014 年加入微策略,目前在数据 gateway 部门参与数据建模、清洗的开发工作,也参与过 Workstation 数据导入的早期开发。

    本文转载自微信公众号:微策略 商业智能

    展开全文
  • C++开发 1.C++基础 《C++Primer》 《深入探索C++对象模型》 《Effective C++》《More Effective C++》《Effective Modern C++》 《现代C++教程:高速上手C++11/14/17/20》 ...

    源于对腾讯招聘要求的思考

    下面的岗位职责来源于,腾讯QQ-windows客户端招聘要求,40-70K,16薪

    如果你阅读了后面的windows c++客户端开发技术栈,就会知道:

    1.了解windows界面实现机制,只要针对《windows程序设计》

    2.深入理解window操作系统的内存管理,文件系统,进程与线程调度,主要是考察《windows核心编程》

    3.熟悉DUI==》DirectUI,QT,MFC考察。 

    windows C++客户端开发技术栈

    1.C++编程

    C++开发
        1.C++基础
            《C++Primer》
            《深入探索C++对象模型》
            《Effective C++》《More Effective C++》《Effective Modern C++》
            《现代C++教程:高速上手C++11/14/17/20》
                https://github.com/changkun/modern-cpp-tutorial
        2.C++进阶
            STL
                《C++标准程序库》
                《Effective STL中文版》
                《STL源代码分析》
            模板
                《C++Templates中文版》
            boost库
        3.C++高阶
            Rumination on C++(中文名:C++沉思录)
            《Exceptional C++》《More Exceptional C++》

    2.windows编程

    如何学习windows 编程
        1.《windows程序设计》
            主要讲windows用户态的API
            user32.dll,gdi32.dll两个库文件的函数
            大部分是关于windows最基本的窗口元素的操控方面的API
            自己写一个windows程序,如打字测速程序
                自己创建消息循环,窗口,光标,用GDI输出图像以及文字
                时间限定:一个月到一个半月
        2.C++风格的windows开发
            MFC
                MFC在MSDN上有专门的文档
                《深入浅出MFC》
                《Programming MFC》
            WTL
            COM
                《COM技术内幕》比较推荐
                潘爱民的《COM原理与应用》
                    马马虎虎
                《COM本质论》
                    没有好的C++基础还是别看了,晦涩难懂
            ATL
                《深入解析ATL》
            项目:基于IE内核的浏览器
        3.《Windows核心编程》
            关于Windows内核方面的东西,比如进程啦,内核对象啦,线程啦,DLL啦,SEH
            某个国内排名前三的互联网公司面试,面试官的很多问题都是这本书里的东西
        4.参考文献
            https://zhuanlan.zhihu.com/p/24773204

    3.界面框架

    如何做到精通QT

    DirectUI

    展开全文
  • 客户端开发GUI框架对比与技术选型总结 客户端开发技术日新月易,目前客户端开发的GUI框架选型大致会从以下几个技术路线中进行选择: 纯系统原生GUI库 第三方库 基于Chromium + Node.js 原生+cef 以上的技术各有优...

    客户端开发GUI框架对比与技术选型总结

    客户端开发技术日新月易,目前客户端开发的GUI框架选型大致会从以下几个技术路线中进行选择:

    • 纯系统原生GUI库
    • 第三方库
    • 基于Chromium + Node.js
    • 原生+cef

    以上的技术各有优缺点。

    我从我个人的开发以及学习经验出发,大致总结每一个GUI开发技术路线的优点和缺点,如有遗漏,请指正勘误,这里底层数据与逻辑处理以C++语言为例进行说明。

    1 系统纯原生开发

    MFC

    开发语言

    C++

    优点

    • 从系统底层调用API,性能好,代码执行效率高,运行速度快;
    • 打包依赖较少,程序打包文件小;

    缺点

    • 跨平台性能差,只支持Windows;
    • 框架过时,微软已不再继续维护和升级;
    • 学习曲线陡峭,要求开发者非常熟悉Windows SDK;
    • 界面控件库美观性较差,对自定义UI效果较难实现;

    Winform

    开发语言

    C#

    优点

    • Winform可以说是微软推出的MFC的下一代GUI框架,控件库丰富,使用更加简单;
    • 使用简单,参考文档多,学习曲线平滑,容易上手;
    • 性能与WPF相比较好,内存占用更少;

    缺点

    • 跨平台性能差,只支持Windows;
    • 与C++交互有难度;
    • 界面控件库美观性较差;
    • 依赖.net;

    WPF

    开发语言

    C#

    优点

    • 功能强大,是目前微软推荐的GUI开发框架;
    • 矢量绘图方便,较容易开发复杂、美观的界面,界面开发效率高;
    • 类库丰富,文档健全,使用简单;
    • 功能与界面分离,灵活易扩展的动画机制;

    缺点

    • 跨平台性能差,只支持Windows;
    • 与C++交互有难度;
    • 打包需依赖.net framework,打包文件过大。
    • 运行性能较差,占用资源较多;

    Duilib

    开发语言

    C++

    优点

    • 开源的Direct UI库,较为开放的开源协议,不影响软件商用;

    • 从系统底层调用API,性能好,代码执行效率高,运行速度快;

    • 界面与逻辑分离,容易开发复杂、美观的界面;

    缺点

    • 官方维护停止,功能扩展停滞,bug较多;
    • 控件库不丰富,需要自行扩展;
    • 需要开发者对源代码熟悉,并可以自行修改源代码修复bug与扩展功能;
    • 参考文档较少;

    2 第三方库

    Qt

    开发语言

    C++

    优点

    • 支持的操作系统丰富,跨平台性能好;

    • 性能较好,近乎能达到纯原生开发应用的性能;

    • 功能丰富,具有各种成熟类库,文档全;

    • 一直在维护与更新,并不断地进行版本迭代,维护程度高;

    缺点

    • Qt支持GPL/LGPL以及商业协议,如果使用Qt开源协议开发的程序在涉及到Qt部分代码的时候需要开源;如果使用商业协议,需要获得商业协议许可并付费;
    • 相关库文件过多,依赖过多,导致程序打包过大;

    3 基于Chromium + Node.js

    Electron

    开发语言

    Html、css、Javascript

    优点

    • 支持的操作系统丰富,跨平台性能好;
    • 使用web前端相关的编程语言,较为简单,容易上手,开发速度较快,不需要有任何C++编程的经验;
    • 界面实现容易,容易写出绚丽、美观的界面;

    缺点

    • 较难与C++层进行交互;
    • 集成了webkit浏览器,导致程序打包过大;
    • 与纯原生开发的GUI程序相比,性能较差,占用资源较多;

    4 原生+cef

    是目前互联网公司主流的GUI开发框架,Cef指的是:Chromium Embedded Framework,基于Chromium浏览器的嵌入式框架。

    Win32+Cef、Duilib+Cef等

    开发语言

    C++

    优点

    • cef 接口精简,维护成本较低;

    • 容易实现各种炫酷的界面效果,界面开发效率高;

    • 底层与C++集成容易;

    • 可以使用Web开发UI界面,C++进行任务型工作;

    • 可以修改cef源代码进行个性化编译;

    缺点

    • 集成了Chromium内核,程序打包大;
    • 占用资源较多,性能一般;

    参考链接

    想要学习更多技术,有兴趣可以访问我的个站:https://www.stubbornhuang.com

    展开全文
  • 客户端开发设计总结

    万次阅读 多人点赞 2016-09-19 16:01:04
    1 基础设施程序最基本的处理就是数据IO以及为了并行计算所做的操作,它们通常会作为程序的底层框架,供上层使用。2 交互从PC到现在的移动设备还有VR,人机交互中的输入设备在不断自然化,可是展示界面的元素仍然还是...
  • Windows平台下Mediasoup客户端开发指南

    千次阅读 2020-12-20 13:11:10
    操作系统:Windows 10 IDE:Visual Studio 2019 ... ... 一、前言 ...Windows版本的Mediasoup客户端需要基于libmediasoupclient和libwebrtc开发,关于这两个静态库如何编译我已经在前面两篇文章中有详细说明了.
  • JAVA GUI觉得java是最...Windows桌面应用程序开发Winform&WPF donetWinform是XP时代的Windows 桌面程序开发技术。采用C#语言开发UI和逻辑,没有使用标签语言写UI。采用事件驱动方法。Winform现在基本被淘汰了...
  • 首先是简单的自我介绍,由面试官先介绍,然后说了一下腾讯视频windows客户端开发的相关要求,win32编程,c++基础,主要是维护开发相关。 然后后面就是让我先介绍一下,我做的项目,后面我也简单的说了一下,做的项目...
  • 桌面客户端框架技术选型

    千次阅读 2020-04-10 22:47:34
    2.客户端能够跨平台,同时适应Windows和Mac平台 3.用户界面友好,满足用户对界面的苛求 4.能够与快速与第三方的C++应用、Web应用集成 5.客户端安装包大小适中,减少用户的下载和安装时间 6.支持XP系统(国内还有近10%...
  • 客户端程序开发漫谈

    2021-01-24 13:50:16
    音视频领域中,除了关注服务器相关技术外,客户端也无法回避,毕竟客户端也要负责采集,编码,收发,解码和渲染,所以客户端开发也是整个音视频技术栈不可或缺的部分。本文梳理一下客户端常见技术方案,为以后客户端...
  • 欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 本文从以下10大点进行阐述: 1.架构设计 ...1、架构设计好的架构利用大规模项目的多人团队开发和代码管理,也利用查找错误和后期维护...
  • 2021 跨平台开发框架到底哪家强? 目前市场上有多个专业做跨平台开发的框架,那么对开发者来说究竟哪一个框架更符合自己的需求呢?笔者特地总结对比了一下不同框架的特性。 国内外笔者选择了一共 5 个主流的测评对象...
  • 阿里云盘window客户端开发

    千次阅读 2020-04-12 17:19:13
    e小天微信机器人扩展开发特点e小天扩展功能e小天微信功能微信通知消息获取通知列表添加通知地址通知类型e小天插件功能如何创建一个扩展 特点 e小天微信机器人为window系统下的PC微信扩展工具 可帮助开发者管理本机中...
  • 广义上讲,IME是微软提供的Windows平台的一套输入法编程规范,依照这套规范(框架),你不需要处理太多输入法特性相关的操作(光标跟随,输入捕获,字码转换后输出到应用程序等),你只需要使用IME规范里面提供的...
  • web客户端开发与应用课件,包含以下知识点: 1、html基本标签 3、html基本标签(二)和表单 4、表单基本验证技术 5、函数与Windows对象 6、BOM编程 7、DOM高级编程 8、表格的使用 9、javascript的基本语法 10、...
  • C语言实现https客户端

    2020-09-04 10:36:53
    C语言实现openssl的https客户端post方法使用,可以传入json字符串的格式,测试的例子,可以使用
  • 跨平台客户端开发经验总结

    万次阅读 热门讨论 2015-09-22 16:25:21
    1 前言因为《猫科动物和企鹅在窗口外看机器人吃苹果》这出戏太美,很多公司都希望能全平台同时发布新版本app,还要...革命总会出新知,今天已有一些开源框架能应对同时在5大平台Mac OS X、Linux、Windows、Android、iO
  • 该文档描述了Windows平台下,QT框架下的MQTT客户端开发环境搭建步骤,亲测可用。文档很详细,有提供QMQTT工程源码下载网址。需要注意的是,请使用较新的Qt版本,建议至少5.3以上。
  • IdentityServer3.Contrib.PowerShell 用于管理 Thinktecture IdentityServer3 的客户端和作用域的 PowerShell cmdlet 保留在实体框架中。动机IdentityServer3 很棒,但缺乏管理工具,尤其是对于不愿意侵入未知数据库...
  • 原文地址:Mina基础(Apache user guide Chapter2 basics)1.1.1... 从这里,我们可以看到Mina是介于应用层与底层网络层之间的,底层网络层基于TCP、UDP、in-VM通信,甚至作为RS-232C串口通信的客户端。你只需在Mina上
  • C# 开发客户端系统的时候,.net 框架本身就比较消耗内存资源,特别是xp 这种老爷机内存配置不是很高的电脑上运行,所以就需要进行内存上的优化,才能流畅的在哪些低端电脑上运行. 想要对C# 开发客户端内存优化需要...
  • 准备一个用来存放 truffle 环境的空文件夹也就是开发合约文件所放位置 新建完成后,在此文件夹 运行powershell(我使用cmd报错),输入 npm -g install truffle 全局安装 truffle 然后输入 truffle init 会在此...
  • 客户端方法和智能客户端方法是两种常被采用的表示层体系结构和设计方法。当然,有许多因素会影响有关哪种方法最适用于特定应用程序的决策,如客户端平台要求、应用程序部署和更新、用户体验、性能、客户端集成、...
  • 客户端架构设计

    千次阅读 2020-09-22 12:09:15
    在设计客户端的架构之前,我们先思考下我们的目标以及目前已经完成的内容。好!那么你是否还能记得我们最开始设计 UI 组件包的时候,就已经反复提到要将我们的 UI 与业务进行分离,不要将业务流程代码写到 UI 窗口里...
  • 十款移动APP开发框架

    千次阅读 2019-11-16 21:42:55
    十款移动APP开发框架: 1.jquery mobile框架 2.bootstrap框架 3.ionic框架 4.Mobile Angular UI框架 5.Intel XDK框架 6.Appcelerator Titanium框架 7.Sencha Touch框架 8.Kendo UI框架 9.PhoneGap框架 10.mui框架 ...
  • 什么 WebAssembly 框架是 Web 的未来

    千次阅读 2022-01-20 17:10:38
    WASM 框架是像 React 这样的 JavaScript 库的可行竞争对手吗? 什么是 WebAssembly? WebAssembly 或 WASM 是所有 Web 浏览器都可以理解和运行的第二种通用​​编程语言。但是,您不会自己在 WebAssembly 中编写脚本...
  • 【游戏开发框架】自制Unity通用游戏框架UnityXFramework,详细教程(Unity3D技能树 | tolua | 框架 | 热更新)
  • ET框架服务端环境部署服务端环境部署,包括安装.NET Core运行库、MongoDB数据库1、确定.NET Core运行库版本,下载并安装2、安装MongoDB数据库和Studio 3T服务端程序编译与运行1、服务端程序编译2、资源服务器编译3、...
  • 本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本框架,能够极大的提高项目开发效率。 整个框架包括三个版本:.net,.net core,java(开发中) 以上三个版本中,.NET为初始版本,开发时间最长,是...
  • Duilib是windows平台下的一款轻量级directUI开源库(遵循BSD协议),完全免费,可用于商业软件开发,只需在软件包里附上协议文件即可。Duilib可以简单方便地实现大多数界面需求,包括换肤、换色,透明等功能,支持...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 108,722
精华内容 43,488
关键字:

windows客户端开发需要什么框架