Marvin's Blog【程式人生】
Ability will never catch up with the demand for it
Home
Tags
Categories
Topics
Platform
26
Jan 2021
UWP设计文档阅读笔记:Text
Text Text block TextBlock是从FrameworkElement派生出来的,可以用来显示单行或者多行文本,甚至包括内嵌的超链接,以及一些基本的文本格式化,比如加粗,斜体,下划线等等。 TextBlock比RichTextBlock有更好的性能,但是支持的格式 …
25
Jan 2021
UWP的XAML控件TreeView
TreeView顾名思义,就是以树形展示数据。最简单的比喻就是一个文件目录树。 UWP中的TreeView是一个XAML控件,支持以下功能: N级嵌套 支持选择一个或者多个节点 支持ItemsSource的数据绑定 以TreeViewItem为TreeView …
24
Jan 2021
UWP中的XAML控件ItemsRepeater
ItemsRepeater的阅读笔记。 ItemsRepeater和ItemsControl有点类似,都提供了用于处理元素集合的逻辑。和ItemsControl相比,ItemsRepeater支持UI布局的虚拟化。但是ItemsRepeater必须使用外部的数据源,无法 …
25
Nov 2020
WinRT中DateTimeFormatter类
关于UWP的DateTimeFormatter Class DateTimeFormatter Class放置在Windows.Globalization.DateTimeFormatting命名空间之下,可能意味着显示日期和时间这件事是一个挺国际化的问题,需要针对不同地方的使用 …
04
Nov 2020
Webview2的Win32 C++ API
个人觉得,之所以采用Win32的COM方式来提供WebView2的API,主要时考虑到COM方式的API在Win32,.NET,WinRT中皆可方便使用。 ICoreWebView2 WebView2的核心封装是ICoreWebView2接口(从IUnkown派生出来的)。让你可 …
29
Oct 2020
Uwp Controls槽点合集
UWP CommandBar OverflowButtonVisibility 根据CommandBar.OverflowButtonVisibility Property,OverflowButtonVisibility默认是Auto。对应 …
20
Oct 2020
UWP如何兼容C++程序
本文是一下文档的阅读笔记: Microsoft C++ Porting and Upgrade Guide How to: Use existing C++ code in a Universal Windows Platform app 文中的很多内容跟C++/CX相 …
17
Oct 2020
Windows 10X上的Win32容器
看了Microsoft 365 Developer的How Windows 10X runs UWP and Win32 apps视频,写下一点感受。 之前一直以为Windows 10X是给双屏的Windows使用的操作系统,只是适配一下,没有其他值得关注的点。但是 看 …
05
Sep 2020
Windows编程接口中的HResult
Windows系统的编程接口常常用HResult返回执行结果的好坏。HResult通常是一个整型值,其字节宽度随计算机位数的增加而增加。现在常常把HResult看成一个带符号的32位整型值。和Linux的编程接口一样,采用负值,也就是最高位为1的值来表示错误代码。 HResult …
14
Aug 2020
XAML的ItemsControl
ItemsControl是Windows.UI.Xaml.Control派生出来的三大Control之一。其特点是它的内容是一个条目列表,有点像编程语言中的Vector类型的数据结构。 ItemsControl实现的接口只有一个,那就 …
11
Aug 2020
了解WinINET和WinHTTP
Windows Internet Windows上有两个HTTP协议栈,一个是WinINet,另一个是WinHTTP。前者主要用于客户端,或者主要用于服务端。 WinINet vs. WinHTTP WinINet支持的功能 可以保存用户凭证,并提供相应的UI …
11
Aug 2020
XAML的ICommand接口
图形界面上可以有多重方式来执行同一个操作。比如可以通过图标按键,可以通过窗口菜单,可以通过右键菜单设置可以通过快捷键来执行“删除”这个操作。为了简化起见,XAML提供ICommand接口来抽象一个操作,供给不同的界面操作方式使用。 ICommand接口相当简单,只有两个方 …
10
Aug 2020
XAML的ContentPresenter
ContentPresenter继承自FrameworkElement,可以用来显示ContentControl的内容。也可以用来显示非XAML control的内容。 ContentPresenter的派生类也不多,包括: ScrollContentPresenter …
09
Aug 2020
XAML控件的VisualState管理
XAML的Control支持VisualStateManager进行视觉呈现状态管理。 VisualStateManager是直接从相依对象派生出来的,它声明有一个添附的相依部属,就是VisualStateManager.VisualStateGroups,可以用在其他元素之上, …
08
Aug 2020
厘清XAML的UIElement/FrameworkElement/Control之间的关系
本文来谈谈WinRT的Windows.UI.XAML的UIElement、FrameworkElement以及Control之间的关系。 如果打开UIElement的文档,会发现它继承自DependencyObject(姑且叫做相依对象)。相依对象再往上,就 …
02
Aug 2020
介绍UWP中的XAML
XAML是Extensible Application Markup Language地缩写,是微软推出的图形界面描述语言。在XAML platform可以找到相关的文档。 为什么需要XAML 图形界面一般都是采用面向对象的方式编写。界面上的所有图形对象构成了一个颗倒生的树。树的 …
22
Jun 2020
C++/WinRT学习笔记(十一):异常处理
Error handling with C++/WinRT Error handling with C++/WinRT 异常最好只用来处理异常。而不是用来处理可预期错误。用throw/catch的方式处理可预期错误,不仅影响性能,而且影响代码可读性。异常用于将那些不可预期,无法在 …
13
Jun 2020
UWP的CreateFileFromApp接口
虽然有些Win32 API在UWP应用中也能使用,但是受到了一些限制。比如CreateFile2在UWP中能使用,但是不能访问除了系统允许的应用自身目录之外的其他目录中的文件。甚至是用户通过Picker选择的目录或者文件也不行。 Windows 10 version 1803引 …
23
May 2020
C++/WinRT学习笔记(十):扩展作成类
Extension points for your implementation types winrt::implements提供了一些自定义的行为,让你可以自定义inspectable 对象的行为。 winrt::implements实现的类不能有私有的析构函数,其析构函数必 …
20
May 2020
C++/WinRT学习笔记(九):Agile对象
Agile objects in C++/WinRT 如果一个WinRT类可以被任意线程访问,这个类就是agile的。大部分的WinRT类都是agile的,除了少部分特殊的。C++/WinRT实现的类型默认都是agile的。但是在某些场景下,你希望实现一个非agile的类,让这个 …
16
May 2020
WDK文档阅读笔记(一):软件追踪工具
本文是的Windows Driver Kit的Tools for Software Tracing章节的阅读笔记。 Tools for Software Tracing WDK提供了一系列的应用程序以及命令行工具来进行软件跟踪。这些工具设计上支持ETW(Event Tracing …
08
May 2020
Windows的事件跟踪(ETW)框架文档阅读笔记
Event Tracing 文档阅读笔记。 ETW(Event Tracing for Windows)是Windows的事件跟踪记录框架。可以实时跟踪事件,也可以把跟踪的事件记录下来保存成文件。ETW记录的事件常常被用来做性能分析。 Windows提供的是核心的事件路由系 …
06
May 2020
UWP事件跟踪记录工具
ETW,是Event Tracing for Windows的缩写。 本文采用的例子来自于Universal Windows Platform Logging Example。 也就是Logging。 安装Windows Performance Toolkit Windows …
05
May 2020
WinRT的PasswordVault
本文讨论WinRT的PasswordVault编程接口。 在开始菜单里面打开Credential Manager,可以看到他有Web Credentials和Windows Credentials,两个功能。 WinRT提供的PasswordVault这个API可以用来操作Web …
20
Apr 2020
使用Python访问WinRT API
安装和介绍 可以用pip安装Python/WinRT,这样就可以在Python中访问WinRT的API了。 Python/WinRT要求Python3.7以上,以及Windows 1809以后的版本。 Python/WinRT是xlang的一个附属项目,具有比较强的试验性质。微软 …
15
Feb 2020
Win32文档学习笔记(一):关于同步
Win32文档学习笔记:Synchronization/About Synchronization Wait Functions Wait函数可以让当前线程挂起,直到所需要的条件满足,或者超时。不同的Wait函数,代办不同的等待条件。 单目标(Single-Object)Wait …
30
Jan 2020
C++/WinRT学习笔记(八):异步处理进阶
More advanced concurrency and asynchrony Offloading work onto the Windows thread pool co_await winrt::resume_background()可以把Coroutine挂起之后在线程 …
30
Jan 2020
UWP笔记:WinRT多线程模型介绍InfoQ
Threading in the Windows Runtime: Part 1 在Build 2013上Marytn Lovell解释了WinRT多线程的关键点Windows Runtime Internals: Understanding the Threading …
09
Jan 2020
UWP文档笔记:应用的生命周期
Windows 10 universal Windows platform (UWP) app lifecycle 传统的Win32程序只有运行和不运行两种状态,UWP应用增加了一种挂起(suspend)状态。挂起意味着应用失去了执行资源,但是其状态还保存再内存中,可以随时被恢 …
31
Dec 2019
UWP文档笔记:文件读写
Files, folders, and libraries阅读笔记。 Enumerate and query files and folders WinRT可以让APP访问目录,文档库,设备,以及网络上的文件。你可以编写查询来搜寻想要的文件。 WinRT的文件访问有一些需要注意的 …
29
Dec 2019
WinRT学习笔记:应用数据相关
WinRT文档阅读笔记,关于ApplicationData。 ApplicationData类提供到应用数据存储的访问。应用数据包括文件以及设置,并且分为三类:local(本地)、roaming(漫游)、temporary(临时)。 App可以访问的目录包括: …
27
Dec 2019
再读MIDL3.0
[MIDL3.0][Microsoft Interface Definition Language 3.0 reference]可以说是搭配C++/WinRT而出品的。使用IDL这种中间语言来描述接口,而不是用C++或者其他语言的类型来描述接口,大概是为了实现接口的通用吧。每种语 …
25
Dec 2019
WinRT for JavaScript学习笔记
Windows Runtime (WinRT) for JavaScript学习笔记。 从wwahost.exe加载的WebApp可以访问WinRT的API。从Edge Webview不仅可以加载远程的Web,也可以加载本地的内容,并且从MSApp访问流(stream) …
19
Dec 2019
C++/WinRT学习笔记(七):事件的生成和处理、以及对比C#
Author events in C++/WinRT 这篇文档讲述如何创建事件,举的是下面这个例子: // BankAccountWRC.idl namespace BankAccountWRC { runtimeclass BankAccount { …
17
Dec 2019
C++/WinRT学习笔记(六):接口的录用和作成
Consume APIs with C++/WinRT C++/WinRT实现的是对winmd的投射。Windows SDK自带的ABI头文件会被投射成C++/WinRT的头文件。比如,ABI的Windows::Foundation::Uri会被投射 …
07
Dec 2019
C++/WinRT学习笔记(五):异步操作和强弱引用
C++/Winrt学习笔记 Concurrency and asynchronous operations with C++/WinRT 超过50毫秒的操作,WinRT一般都会将其设为异步操作。异步操作意味着操作调用者不必阻塞并等待操作完成(但是可以选择阻塞)。 WinRT定义了 …
23
Nov 2019
AppConsult博文(DesktopBridge相关)阅读笔记 (一)
学习博文https://blogs.msdn.microsoft.com/appconsult/tag/desktop-bridge/来了解UWP Desktop Bridge的Approach。 201610 Desktop Bridge – The bridge …
19
Nov 2019
Win32和WinRT的区别
Ars Technica的这篇文章Turning to the past to power Windows’ future: An in-depth look at WinRT从历史的角度对WinRT进行了长篇介绍。简单地说WinRT基于COM,但是目的没有COM那么通用。COM …
16
Nov 2019
UWP:App Services
Create and consume an app service 这个文章举了一个进程间应用服务的例子。方案里面涉及三个项目:AppServiceProvider、MyAppService和ClientApp。 一个幕后任务(Background Task)被创建的时候可以存续 …
11
Nov 2019
XAML API 学习笔记:ListView
先来看看ListView的层级 ItemsControl Selector ListViewBase ListView ItemsControl ItemsControl Class用来表示一系列条目(Items)的集合。它直接继承自Control,所以也 …
10
Nov 2019
XAML API 学习笔记:Control
Windows.UI.Xaml.Controls.Control继承自FrameworkElement,是ContentControl、UserControl以及ItemsControl的基类。Control定义了一个ControlTemplate辖属,可以用来控制和调 …
04
Nov 2019
XAML API 学习笔记:FrameworkElement
FrameworkElement(简称FE)集成自UIElement,是搭建XAML的Visual Tree的基础,为XAML提供一些框架性功能,并为UI元素提供布局基础。 通常用户不需要直接创建或者扩展FrameworkElement。而是创建或者扩展FE的子类: …
03
Nov 2019
XAML API 学习笔记:UIElement
DO(DependencyObject伴对象)以及DP(DependencyProperty伴辖属)对应了XAML语法中的元素和属性,以及树形结构中的节点。那么从DO派生出来的UIElement进一步丰富了DO的语义。为DO添加UI构件的响应性。 你无法实例化一 …
30
Sep 2019
VS2019:UWP WebView中JS调用WinRT接口
UWP支持使用Javascript来调用Windows Runtime接口。但是有一个问题,官方例子中Create a “Hello, world” app (JS)只适用于Visual Studio 2017。因为Visual Studio 2019在可 …
26
Sep 2019
ConfD Basic学习手记
ConfD是tail-f推出的配置管理开发框架,提供多种工具,针对多种标准,其中也包括了对NETCONF/YANG的支持。Tail-f已经被思科收购,所以ConfD应该说是思科的ConfD了。 安装ConfD Basic ConfD有两个版本:Basic和Premium。其中 …
21
Sep 2019
C++/WinRT学习笔记(四):XAML集合以及日期转化
C++/Winrt学习笔记 ListView的ItemSource WinRT的ListView是从ItemsControl派生出来的,其ItemSource也是来自于ItemsControl。 对于C++/WinRT而言,需要一堆的接口才能符合ItemSource的要求。 序 …
15
Sep 2019
C++/WinRT学习笔记(三):XAML以及其他
XAML controls; bind to a C++/WinRT property 什么是可观测的属格?如果runtimeclass BookSku有一个属格叫做Title。如果在Title …
14
Sep 2019
C++/WinRT学习笔记(二):ABI接口相关
Interop between C++/WinRT and the ABI WinRT是基于COM,而COM分服务端和客户端,之间通过接口来通信。所以对于C++ WinRT而言,一个重要的工作是封装COM接口,共上层使用。 In general, C++/WinRT …
07
Sep 2019
C++/WinRT学习笔记(一):hstring和标准C++类型
本文主要参照String handling in C++/WinRT和Standard C++ data types and C++/WinRT。 hstring WinRT有自己的字符串类型,叫做HSTRING。代表一个不可变的字符串类型,其定义如下: typedef …
25
Aug 2019
C++/WinRT中的Coroutine使用
本文参考了Putting Coroutines to Work with the Windows Runtime Slides,来了解一下C++/WinRT是如何使用Coroutine的。 回调、还是回调 如果使用C++/CX来编写WinRT的异步代码,需要使用许多回调函数,如下 …
10
Aug 2019
C++/WinRT简介
如何使用较为标准的C++语言来编写WinRT应用。 为什么这么说?因为之前用来编写WinRT应用的语言叫做C++/CX,在语言层面参杂了一些微软自身的语法扩展,不是标准的C++。而C++/WinRT试图用标准化的C++来编写WinRT(虽然使用到了一些还没有被标准化的语言特性,但 …
08
Aug 2019
MIDL3.0简介
MIDL是Microsoft Interface Definition Language的简称,是微软用来描述WinRT组件或者其他面向对象组件的接口描述语言,但其功能十分强大,已经接近面向对象的编程语言了。MIDL3.0和2.0相比,语法更加简洁了。 Windows 10 …
03
May 2019
Electron试用手记
Chrome浏览器是开源的,Github把Chrome的界面加上HTML/CSS/JavaScript引擎抽取出来,就成为了Electron,可以开发桌面版的网页程序。网页程序通常是跑在浏览器中的,由于Electron提供了一套类似于浏览器的龟壳,于是这些网页程序就可以像海归一样 …
17
Mar 2019
macos图形界面的窗口、视图、菜单和控件
苹果在Human Interface Guidelines页面为每种平台提供了UI设计的指导。从中我们可以一窥苹果所认为的APP应该是什么样子的。 本文从Human Interface Guidelines的mac篇入手,谈谈macos上UI相关的窗口,视图和控件。 窗口 首先 …
25
Feb 2019
练习使用OAuth访问Microsoft Graph
本练习基于模块Microsoft Graph Training Module - Build Python Django apps with Microsoft Graph。 首先,克隆Git仓库 git clone --depth=1 …
24
Feb 2019
纵览OneDrive的GraphAPI
OneDrive是微软推出的云存储工具,类似Dropbox以及Google Drive。同样的,OneDrive也可以通过RESTful API来访问。微软把他们家的API服务叫做Graph,OneDrive的API只是Microsoft Graph API集合中的一部分。 …