- 博客(51)
- 收藏
- 关注
原创 窗口子类别化
将GWL_WNDPROC标识符作为参数来呼叫GetWindowLong,就可以得到这个窗口消息处理程序的地址。另外,可以呼叫SetWindowLong给该滚动条设定一个新的窗口消息处理程序,这个技术叫做「窗口子类别化」,非常有用。它能让你给现存的窗口消息处理程序设定「挂勾」,以便在自己的程序中处理一些消息,同时将其它所有消息传递给旧的窗口消息处理程序。DUI就使用到了这个技术...
2020-12-08 23:31:16 160
原创 Windows鼠标消息
Windows鼠标消息一共有21种用户显示区的消息: 键 按下 释放 按下(双键) 左 WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK 中 WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTOND
2020-12-03 22:23:57 632
原创 LeetCode-树-对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的:1/ \2 2\ \3 3示例 1:输入:root = [1,2,2,3,4...
2020-12-03 22:10:52 127
原创 LeetCode-树-根据前序遍历与中序遍历求树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-in...
2020-12-02 22:22:01 236
原创 leetcode-树-删点成林
给出二叉树的根节点root,树上每个节点都有一个不同的值。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: .
2020-11-30 23:34:40 119
原创 leetcode-树-从根到叶的二进制数之和
给出一棵二叉树,其上每个结点的值都是0或1。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数01101,也就是13。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。返回这些数字之和。题目数据保证答案是一个 32 位 整数。示例 1:输入:root = [1,0,1,0,1,0,1]输出:22解释:(100) + (101) + (110) + ...
2020-11-30 23:26:09 119
原创 LeetCode-树-求和路径
给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。示例:给定如下二叉树,以及目标和sum = 22, 返回:3解释:和为 22的路径有:[5,4,11,2], [5,8,4,5], [4,11,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob...
2020-11-30 23:22:25 173
原创 LeetCode-树-具有所有最深节点的最小子树
给定一个根为root的二叉树,每个节点的深度是 该节点到根的最短距离 。如果一个节点在 整个树 的任意节点之间具有最大的深度,则该节点是 最深的 。一个节点的 子树 是该节点加上它的所有后代的集合。返回能满足 以该节点为根的子树中包含所有最深的节点 这一条件的具有最大深度的节点。注意:本题与力扣 1123 重复:https://leetcode-cn.com/problems/lowest-common-ancestor-of-deepest-leaves/示例 1:...
2020-11-28 21:05:22 262
原创 字符消息
字符消息的产生在消息循环中while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; }当右WM_KEYDOWN或WM_SYSKEYDOWN消息产生并处理时,消息循环中,TranslateMessage会将按键消息翻译转化称字符消息WM_CHAR。如果消息为WM_KEYDOWN或者W
2020-11-26 23:26:19 233 1
原创 按键消息的处理
按键消息分为4种,WM_KEYDOWN,WM_SYSKEYDOWN,WM_KEYUP,WM_SYSKEYUPwparam代表虚拟键;lparam代表一些其他混合的信息。消息处理时,如下:case WM_KEYDOWN: switch (wParam) { case VK_HOME: SendMessage (hwnd, WM_VSCROLL, SB_TOP, 0) ; b
2020-11-26 23:10:07 496
原创 LeetCode-树-合法二叉搜索树
实现一个函数,检查一棵二叉树是否为二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/legal-binary-sear...
2020-11-26 22:43:30 108
原创 Windows按键消息
应用程序从Windows接收的关于键盘事件的消息可以分为按键消息和字符消息两类按键消息当按下一个键时,Windows把WM_KEYDOWN或者WM_SYSKEYDOWN消息放入有输入焦点的窗口的消息队列;当释放一个键时,Windows把WM_KEYUP或者WM_SYSKEYUP消息放入消息队列中。系统按键与非系统按键WM_SYSKEYDOWN和WM_SYSKEYUP中的「SYS」代表「系统」,它表示该按键对Windows比对Windows应用程序更加重要。WM_SYSKEYDOWN和
2020-11-26 00:08:37 1154
原创 LeetCode-树-路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为...
2020-11-25 22:50:52 79
原创 键盘输入焦点与键盘消息的产生流动
键盘输入以消息的形式传递给程序的窗口消息处理程序关于输入焦点所有的程序共享一个键盘,一个程序的所有窗口共享一个键盘当键盘按下时,只有一个窗口消息处理函数接收到键盘消息,键盘消息包含指定的窗口句柄接收到键盘消息的窗口就是当前获取输入焦点的窗口。输入焦点的概念与活动窗口的概念很相近。有输入焦点的窗口是活动窗口或活动窗口的衍生窗口如果活动窗口有子窗口,那么有输入焦点的窗口既可以是活动窗口也可以是其子窗口。最常见的子窗口有类似以下控件:出现在对话框中的下压按钮、单选钮、复选框、滚动条、编辑.
2020-11-24 22:58:10 398 1
原创 LeetCode-树-二叉树剪枝
给定二叉树根结点root,此外树的每个结点的值要么是 0,要么是 1。返回移除了所有不包含 1 的子树的原二叉树。( 节点 X 的子树为 X 本身,以及所有 X 的后代。)示例1:输入: [1,null,0,0,1]输出: [1,null,0,null,1]解释:只有红色节点满足条件“所有不包含 1 的子树”。右图为返回的答案。示例2:输入: [1,0,1,0,0,0,1]输出: [1,null,1,null,1]示例3:输入: [1,1,0,1,1,...
2020-11-24 22:10:06 128
原创 Windows获取设备上下文的方式
如果在处理一个消息时取得了设备内容句柄HDC,应该在退出窗口函数之前释放它(或者删除它)。1. 在处理WM_PAINT消息时,使用BeginPaint和EndPaint呼叫hdc = BeginPaint (hwnd, &ps) ; //其它行程序 EndPaint (hwnd, &ps) ;变量ps是型态为PAINTSTRUCT的结构,该结构的hdc字段是BeginPaint传回的设备内容句柄。PAINTSTRUCT结构又包含一个名为rcPain
2020-11-23 23:49:08 507
原创 WindowsGDI概览
Windows NT中的图形主要由GDI32.DLL动态链接库输出的函数来处理。GDI32.DLL动态链接库呼叫显示器和打印机的驱动程序中的例程,来实现绘图的。GDI的主要目的之一是支持与设备无关的图形。使用GDI的统一接口进行绘图,GDI内部调用不同显示设备的驱动程序进行绘制。图形输出设备分为两大类:位映像设备和向量设备。当前显示器打印机都是位映像设备,GDI函数分为几类:取得(或者建立)和释放(或者清除)设备内容的函数 GetDC和RealseDC GetDC和Rea..
2020-11-22 21:29:50 274
原创 LeetCode-树-树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:3/ \4 5/ \1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,...
2020-11-21 21:05:11 167
原创 LeetCode-树-完全二叉树的节点个数
给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2h个节点。示例:输入: 1 / \ 2 3/ \ /4 5 6输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-complete-tree-no...
2020-11-20 23:03:57 300
原创 LeetCode-树-103. 二叉树的锯齿形层次遍历
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-zigzag-le...
2020-11-18 22:48:49 90
原创 LeetCode-树-平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true来源:力扣(LeetCode)链接:https://leetcode-cn.com/..
2020-11-17 22:26:02 95
原创 LeetCode-树-好叶子节点对数
题干:给你二叉树的根节点 root 和一个整数 distance 。如果二叉树中两个 叶 节点之间的 最短路径长度 小于或者等于 distance ,那它们就可以构成一组 好叶子节点对 。返回树中 好叶子节点对的数量 。示例 1:输入:root = [1,2,3,null,4], distance = 3输出:1解释:树的叶节点是 3 和 4 ,它们之间的最短路径的长度是 3 。这是唯一的好叶子节点对。示例 2:输入:root = [1,2,3,4,5,6,7], di
2020-11-17 22:13:39 279
原创 WIndows队列化消息与非队列化消息
Windows给窗口发送消息,这意味着Windows主动呼叫窗口消息处理程序。Windows程序也有一个消息循环,它呼叫啊GetMessage从消息队列中取出消息,并且呼叫DisPatchMessage将消息发送给消息处理程序。那么应用程序是依次等待消息,然后将消息送到某个地方去,或者直接从给程序外面接收消息吗?消息能够被分为队列化消息与非队列化消息。队列化消息是由Windows放入到程序消息队列中的。在应用程序的消息循环中,重新传回并分配给窗口消息处理程序。也就是说,队列化的消息被发送到
2020-11-08 15:12:18 137
原创 cvCreateImageHeader的使用
在多线程情况下,处理同一组图像资源,线程会改变图像资源的ROI。为了避免线程之间的不同步问题,两种方法,一种是使用线程锁对资源进行同步,会用同步的效率问题一种是对资源进行拷贝,这样也会带来内存拷贝的效率问题使用cvCreateImageHeader,可以只创建一个图像头,并且使用原来图像资源的数据,使用cvSetImageData对图像头设置图像数据。就可以对新创建的图像进行设置ROI,然后进行操作了。使用完毕后,需要使用cvReleaseImageHeader进行图像头资源的释放。
2020-11-08 15:10:53 597
原创 电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"这是一道类似全排列的题目,使用递归思想void digui_out(int idx, strin...
2020-03-15 23:57:24 152
原创 网络基础知识
网络层次国际标准组织ISO,在1978年提出“开放系统互联参考模型”,即著名的OSI/RM模型。它将计算机网络体系结构的通信协议划分位7层,自下而上依次为:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。其中第四层完成数据的传送服务,上面三层面向客户。实际工程上,将网络层次划分为5层,物理层,数据链路层,网络层,传输层,应用层。OSI七层网络模型物理层:激活,维持...
2020-03-02 20:44:10 415
原创 对话框
对话框的一般形式时包含多种子窗口控件的弹出式窗口。这些控件的大小与位置在程序的资源叙述文件的对话框模板中指定。当程序呼叫一句模板建立的对话框时,Windows负责建立弹出式对话框窗口和子窗口控件,并提供处理对话框消息(包括所有的键盘和鼠标输入)的窗口消息处理程序。有时候称呼完成这些功能的Windows内部程序代码为“对话框管理器”。windows的内部对话框窗口消息处理函数所处理的许多消息...
2020-01-07 20:48:01 232
原创 Static&edit&list
静态类别在CreateWindow函数中指定窗口类别为「static」,就可以建立静态文字的子窗口控件。这些子窗口非常「文静」。它既不接收鼠标或键盘输入,也不向父窗口发送WM_COMMAND消息。当在静态子窗口上移动或者按下鼠标时,这个子窗口将拦截WM_NCHITTEST消息并将HTTRANSPARENT的值传回给Windows,这将使Windows向其下层窗口,通常是它的父窗口,发送相同...
2020-01-07 07:40:55 280
原创 Button&CheckBox&RadioBox
按钮按钮是一个矩形,包括了CreateWindow呼叫中窗口文字参数所指定的文字。该矩形占用了CreateWindow中的全部高度与宽度,而文字在举行的中心。按钮控件主要用来触发一个立即响应的动作,而不保留任何形式的开关指示。按钮控件有两种窗口样式,分别为BS_PUSHBUTTON和BS_DEFPUSHBUTTON。DEF代表默认。当鼠标光标在按钮中时,按下鼠标,将使按钮用三维阴影重画...
2020-01-07 07:22:25 278
原创 Windows按钮
struct{ int iStyle ; TCHAR * szText ;}button[] ={ BS_PUSHBUTTON, TEXT ("PUSHBUTTON"), BS_DEFPUSHBUTTON, TEXT ("DEFPUSHBUTTON"), BS_CHECKBOX, TEXT ("CHECK...
2020-01-06 22:33:04 140
原创 子窗口控件
windows子窗口可以向父窗口发送消息。通过调用GetParent函数,子窗口可以获取父窗口的窗口句柄。hwndParent = GetParent (hwnd) ;其中hwnd是子窗口的窗口句柄。子窗口可以向父窗口发送消息,通过SendMessageSendMessage (hwndParent, message, wParam, lParam) ;参数message是整型...
2020-01-03 08:03:28 225
原创 hello 2020
2020年,猝不及防,来到了。中学课本上,全面实现小康社会的年代到达了。看看自己的存款。不好意思,为社会主义现代化发展拖后腿了。2019年的目标还没有实现呢。2020年的计划,还没来得及制定。全年40多个周末,从来只修一天。平时工作日下班回来,洗一洗,就已经11点了。早晨醒来,上班,还有迟到几分钟。一天到晚,没有自己的时间。生活,学习。一年下来,回忆起来,感觉没有任何经历,因为...
2020-01-02 23:10:09 330
原创 windows定时器
Microsoft Windows定时器是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。您的程序将时间间隔告诉Windows,例如「每10秒钟通知我一声」,然后Windows给您的程序发送周期性发生的WM_TIMER消息以表示时间到了。初看之下,Windows定时器似乎不如键盘和鼠标设备重要,而且对许多应用程序来说确实如此。但是,定时器比您可能认为的要重要得多,它不只...
2019-12-24 22:28:30 1947 1
原创 鼠标消息
可以用GetSystemMetrics函数来确认鼠标是否存在:fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ;如果已经安装了鼠标,fMouse将传回TRUE(非0);如果没有安装,则传回0。要确定所安装鼠标其上按键的个数,可使用cButtons = GetSystemMetrics (SM_CMOUSEBUTTONS) ;如果没...
2019-12-24 21:21:28 709
原创 字符消息
以下的程序代码:while(GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; }这是WinMain中典型的消息循环。GetMessage函数用队列中的下一个消息填入msg结构的字段。D...
2019-12-23 22:47:32 265
原创 使用键盘消息
如果程序能够获得每个按键的信息,这当然很理想,但是大多数Windows程序忽略了几乎所有的按键,而只处理部分的按键消息。WM_SYSKEYDOWN和WM_SYSKEYUP消息是由Windows系统函数使用的,您不必为此费心,就算你要处理WM_KEYDOWN消息,通常也可以忽略WM_KEYUP消息。Windows程序通常为不产生字符的按键使用WM_KEYDOWN消息。虽然您可能认为借助按键消息和...
2019-12-22 17:44:33 260
原创 windows 键盘消息
键盘输入以消息的形式传递给程序的窗口消息处理程序。Windows用八种不同的消息来传递不同的键盘事件。这好像太多了,但是(就像我们所看到的一样)程序可以忽略其中至少一半的消息而不会有任何问题。并且,在大多数情况下,这些消息中包含的键盘信息会多于程序所需要的。处理键盘的部分工作就是识别出哪些消息是重要的,哪些是不重要的。谁获得了焦点与所有的个人计算机硬件一样,键盘必须由在Windows下...
2019-12-22 17:28:39 722
原创 GDI 映射方式
GDI 映像方式到目前为止,所有的程序都是相对于显示区域的左上角,以图素为单位绘图的。这是内定情况,但不是唯一选择。事实上,「映像方式」是一种几乎影响任何显示区域绘图的设备内容属性。另外有四种设备内容属性-窗口原点、视端口原点、窗口范围和视端口范围-与映像方式密切相关。大多数GDI绘图函数需要坐标值或大小。例如,下面是TextOut函数:TextOut (hdc, x, y, psT...
2019-12-22 13:37:34 228
原创 画刷填充区域
Windows中七个用来画带边缘的填入图形的函数 函数 图形 Rectangle 直角矩形 Ellipse 椭圆 RoundRect 圆角矩形 Chord 椭圆周上的弧,两端以弦连接 ...
2019-12-20 22:28:56 534
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人