![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ MFC API
文章平均质量分 59
UsherYue
进入研发行业10年,曾任职与多家创业公司,负责核心研发工作,团队建设管理工作。
展开
-
Node.js插件编写(9)-本地安全线程实现JS Promise
这篇文章来实现的是在C/C++插件中,实现Native Promise, 调用 Native Thread执行后台任务, 执行玩后台任务后,返回到JS前端, JS前端可以通过 await关键字等待返回。Promise实现原理下面一些封装是实现本插件的核心,没有什么文档具体只能去看源码案例分析。Napi::Promise::Deferred //Promise C/C++实现对象Napi::Promise::Deferred::Resolve() // 相对于js promise的resol原创 2022-01-07 16:59:18 · 3297 阅读 · 0 评论 -
Node.js插件编写(8)-插件代码通过Emit与js代码进行交互
我们在Node.js中经常用到的一个包是 events ,这个包下的 EventEmitter我们可以看到很多地方都用到了 , 基于这个事件机制我们可以在合适的新号到来的时候去做合适的事情。这种机制用在网络IO、文件读写、异步任务等等场景都非常合适。例如下面的代码const events = require('events');events.captureRejections = true;const ee1 = new events.EventEmitter();ee1.on('som原创 2022-01-06 16:34:47 · 1060 阅读 · 0 评论 -
Node.js插件编写(7)-异步AsyncWorker的代码实现
异步介绍我们在Node.js中经常用到异步机制, 比如异步改变一个文件的访问权限,然后任务完成之后我们收到一个回调通知:代码如下:import { chmod } from 'fs';chmod('chmod.txt', 0o775, (err) => { console.log('The permissions for file "my_file.txt" have been changed!');});原理实现这里我们用到了一个很重要的类,Napi::AsyncWo原创 2022-01-04 16:52:14 · 914 阅读 · 0 评论 -
Node.js插件编写(6)-导出类对象作为参数传递
前面几篇文章我们写了如何通过C++ 为Node.js 导出 自定义类对象 。 这篇文章我们才更进一步操作一些这个自定义类, 这篇文章我们的目的是 将自定义导出的类对象作为导出函数的参数传递。功能伪代码如下:MyObject obj1=New MyObject(11);MyObject obj2=New MyObject(22);Var ret=Add(obj1,obj2) ; //重点是这里我们将两个对象作为参数传递相加下面我们来编写插件实现代码插件导出类的C++代码 Pa...原创 2021-12-31 15:03:14 · 1588 阅读 · 0 评论 -
Duilib界面解析1---简单的仿360窗口
最近开始研究Duilib,并逐个分析Duilib的demo例子,记录下来方便更多的人学习 。界面运行起来如下图所示,该Demo主要包含 BaseDialog.h和BaseDialog.cpp,以及界面布局文件的详细解释,每行注释已经添加。BaseDialog头文件源文件 以及布局文件如下,可自行下载Duilib 根据注释学习该例子 只针对新手~~~#ifndef BaseDialog_H#def原创 2015-10-15 23:45:50 · 12320 阅读 · 5 评论 -
Node.js插件编写(5)-创建类原型以及类工厂
我们前一篇文章写过通过C++为node.js 编写函数工厂和对象工厂的实现 ,这篇文章我们进一步完善,通过Node.js插件 导出类原型, 以及导出一个类工厂函数。我们要让编写的插件导出的类支持new关键字 ,以及可以通过函数直接返回对象,具体js代码如下:var addon = require('bindings')('my_node_addon.node');//通过原型创建对象var obj1 = new addon.MyObject(11);console.log(obj1.va原创 2021-12-30 16:19:24 · 257 阅读 · 0 评论 -
Automating MS-Office Applications
Office自动化操作 VC操作Office转载 2021-12-08 11:08:19 · 136 阅读 · 0 评论 -
对当前进程进行提升权限
对于进程提升权限主要用到下面三个API OpenProcessToken(); 打开权限令牌 LookupPrivilegeValue(); 检索一个唯一的本地标识符 LUID AdjustTokenPrivileges(); 调整令牌特权 BOOL O原创 2012-02-08 17:26:08 · 1125 阅读 · 0 评论 -
windows下的DDB和DIB
1、DDB依赖于具体设备:DDB的颜色模式必需与输出设备相一致。例如,如果当前的显示设备是256色模式,那么DDB必然也是256色的。在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板。由于DDB高度依赖输出设备,所以DDB只能存在于内存中,它要么在视频内存中,要么在系统内存中DIB的与设备无关性主要体现在以下两个方面:DIB的颜色模式与设备无关。原创 2012-03-29 20:22:06 · 4789 阅读 · 1 评论 -
java与c++中的对象序列化 分析。
有时候我们在开发项目的时候,对于数据的保存 我们通常是直接将数据保存到磁盘上面 ,但是这样操作起来非常的不方便 ,尤其是在大型的项目开发中。 对象的序列化可以将对象以数据的形式存储到文件中;反之我们也可以从文件中加载一个对象 ,也叫反序列化。 对于多个数据的操作封装在一起,写入文件,在反序列化的时候我们只需要读取这个对象就可以了 ,我么就不必关心内部数据和方法了 。因为所有数据都包原创 2012-04-06 13:09:23 · 3460 阅读 · 1 评论 -
EnumChildWindows的使用
函数功能:枚举一个父窗口的所有子窗口。 函数原型: BOOL EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc, LPARAM lParam); 各个参数如下: HWND hWndParent 父窗口句柄 WNDENUMPROC lpEnumFunc 回调函数的地址 LPARA原创 2012-05-27 16:36:18 · 11828 阅读 · 0 评论 -
Nginx源码分析1--------编写Nginx扩展模块
近日来申请通过CSDN准专家,为了顺利在六个月后升级为认证专家,并对得起这个勋章,我感觉 不能松懈博客的更新频率以及质量了。C/C++ windows下的开发是我相对来说做的比较多的地方,对于Linux下的服务器开发 等等也算是半路出家,恰逢近来在研究分布式存储,涉及到了 Nginx 扩展开发以及配置,查阅了好多的资料发现Nginx配置部署起来相当的容易,但是源代码是真的晦涩难懂,经常会看的我原创 2015-01-28 23:34:39 · 5244 阅读 · 0 评论 -
VC中使用CButtonST使用技巧
CButtonST是一个功能强大的类,他可以产生各种不同风格的 Button按钮,可以在实际开发中使用,CButtonST是控件子绘制的原理 。CButtonST可以从网上下载到源文件 ,下载之后 加入到我们的工程中 。下面是使用方法 。1、创建一个Button控件 并为之 关联一个 Control变量 。2、修改Button控件的父类为 CButtonST //{{AFX原创 2012-02-06 10:54:16 · 1240 阅读 · 0 评论 -
windows下的剪切板编程详解
说道剪切板大家都不陌生吧 ,右键粘贴 都用过。其实编程也很简单,但是在进程之间的通信 却有着不可替代的作用 ,剪切板说白了就是一个缓冲区 ,但是这个缓冲区不是某个进程的私有空间,而被全部进程所共享。windows下的每个进程都可以共享剪切板中的数据 。 其实我以前也学过剪切板编程但是一直没有真正理解,于是又学习了一遍。终于明白了。。。写下来分享下。。。。要使用剪切板就要了解剪切板的几原创 2012-01-19 19:09:22 · 4647 阅读 · 0 评论 -
模拟windows任务管理器列举系统进程,并关闭进程......
其实对于 windows进程的操作很简单,只要理解了 进程线程的概念 对于 进程的操作 那么就只是 几个函数的 问题了 。下面是 对于进程操作要用到的几个函数 。进程的概念:我们运行了一个程序,那个这个独立的程序就是一个进程。进程有自己的私有地址空间,进程中的线程共享这些私有地址空间 。在一个进程中多个线程共同完成一项功能,可以提高工作的效率。 HANDLE WINAPI Cre原创 2012-01-18 14:53:49 · 2956 阅读 · 0 评论 -
动态链接库的简单应用
动态链接库是windows下实现数据共享的一种重要方法,它提供了 二进制层上的共享。 动态链接库 可以很好的实现 项目模块之间的分离,如果某一模块出错不需要重新编译整个项目,只需要修改相应的模块 ,以及在产品的升级过程中 我们可以通过替换dll文件来实现产品的升级.动态链接库包含2个文件 lib因入口 和dll动态链接库 ,我们在程序中通过已入库 来调用dll文件中 存储的函数 。原创 2012-01-18 12:33:41 · 846 阅读 · 0 评论 -
VS2008下的CListCtrl控件的使用
VS2008下的CListCtrl控件的使用 最近要适应VS这个开发环境,从VC6移植到VS有很多不习惯.在一个小程序中利用到了 CListCtrl控件的时候 就出现了问题 。其实自VC6下这个控件我还是会使用的 主要指Report风格 。。下面是VS下的CListCtrl控件的使用。。 我们利用的时候主要是针对CListCtrl的 report风格。关于CList原创 2012-01-12 14:43:36 · 3916 阅读 · 0 评论 -
VC增加应用程序图标到系统托盘
文对如何将应用程序的图标加入到Windows的系统托盘中做了较为详细的介绍, 然后给出了一个C++类以方便的实现该功能,并在VC++6.0中给出了一个应用程序 实例来体现其具体实现过程。同时该应用程序实例还讲解了如何在托盘中实现动 画图标以及在程序中关闭计算机的技术。 关键词:系统托盘 动画图标 Windows98桌面的系统托盘位于任务栏的右侧,即Wind转载 2011-12-07 21:04:10 · 2191 阅读 · 0 评论 -
关于SMTP协议发送邮件的总结
最近在看一本书,是VC++网络编程,可以说那本书写的乱七八糟,我也晕头转向、、、 、我写的大家可能有些看着抽象,捡着能看懂的看就行,我讲述的是SMTP的原理,而不是如何编程来实现,我纠结一天的感悟,希望对学习网络编程的朋友能有些帮助。。。 书上的SMTP小例子是写一个可以向 smtp.163.com邮件服务器邮件,于是我就跟着探索!! SMTP是简单邮件传送协议,标准端口是2原创 2011-12-06 03:53:17 · 29762 阅读 · 10 评论 -
看懂下面C++代码才说你理解了C++多态虚函数!
#include using namespace std ;class Father{private : virtual void Say() //只有添加了virtual 关键字声明才会产生虚函数表 虚函数表在编译的时候确定 virtual是实现多态的关键 { cout } virtual void Run() { cout }};原创 2013-06-26 10:22:25 · 1991 阅读 · 2 评论 -
Boost Build
Window XP + Visual Studio 2008获取Boost库源码我们可以从http://www.boost.org/ 上获取boost的源代码。当前最新版本为1.45.0。解压到指定目录例如:D:/Program Files/boost/目录下获取bjam一种方式:从http://sourceforge.net/projects/boost/files/bo转载 2013-06-27 15:22:44 · 2723 阅读 · 0 评论 -
VC中的界面美化
本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 1. 大致了解MFC框架的基本运作原理; 2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; 3. 熟悉OOP理论和技术; 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 正文1. 美化界面之开题篇相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界转载 2016-09-27 09:27:15 · 1660 阅读 · 0 评论 -
C++实现一个线程安全的单例工厂
我们见到经常有人用 static 局部对象的方式实现了类似单例模式,最近发现一篇文章明确写明 编译器在处理 static局部变量的时候 并不是线程安全的 !!!http://blogs.msdn.com/b/oldnewthing/archive/2004/03/08/85901.aspx 于是实现了一个单例工厂 并且是线程安全的#ifndef SINGLETONFACTORY_H#原创 2015-11-07 19:56:22 · 2497 阅读 · 0 评论 -
Linux下C程序设计(4)----操作环境变量 、程序传递参数getopt getopt_long操作、获取时间
通过命令传递参数查看环境变量 /************************************************************************* > File Name: env.c > Author: > Mail: > Created Time: Tue 24 Feb 2015 10:42:21 PM PST ****************原创 2015-02-26 22:00:43 · 1626 阅读 · 0 评论 -
Linux下C编程-----文件操作(1) 通过系统调用简单操作标准输入、标准输出、标准错误
Linux的 C系统调用操作 ,下面我们就来练习下 简单的系统调用操作read系统调用测试/************************************************************************* > File Name: read.c > Author: > Mail: > Created Time: Tue 10 Feb 2015原创 2015-02-10 21:57:18 · 4619 阅读 · 1 评论 -
C++编写绚丽的界面
最近项目特别的操蛋,要用C++写出各种变态界面,今晚上赶工总算有了一点小的收货。由于没有时间去写博文 ,等项目期完了 准备 写一系列 如何在C++/win32/mfc开发高质量 可扩展界面组建下面这个界面就可以通过 配置文件 直接配置不同页面 不同按钮组 支持四态八态图。。 总之 c++写原生界面就是操蛋。、原创 2014-12-14 23:46:33 · 9178 阅读 · 1 评论 -
手动使用C/C++编写Lua扩展插件
最近在研究如何在Windows 下嵌入Lua来完成业务模块编写的时候 发现Lua的一些问题,首先Lua作为一门脚本语言,其灵活性和可扩展性是很高的,要不然Cocos2d-x中也不会嵌入他来编写业务逻辑,但是由于国内资料相当的少,很少有人去正八经研究完了之后 写一篇文章 来分享自己的成果,想要去深入理解应用一些东西得时候,显得很无力,很多Lua扩展都是直接写扩展库来完成,如果不理解原理甚至你都不会灵原创 2014-12-12 02:04:33 · 10893 阅读 · 0 评论 -
利用C/C++扩展php语言实现 Usher_GetHostIP无参函数
PHP程序员需要略会C也是必要的,不管从业务角度还是 专业角度,因为C是PHP的母语。并且我们一般不会用原生PHP来处理大批量业务逻辑,这个时候我们需要扩展。曾经有一个笑话 是一个php程序员在群里喊了一句 "PHP是世界上最牛逼的语言,没有之一!" 然后 所有人笑了。笑话归笑话,但是PHP从语言本质来说的确是一门不错的语言,如果灵活的运用,他不应该成为阻碍我们前进的瓶颈,反而是一把利器。如果运用得当PHP真的是个不错的选择。语言本身没界限高低之分,只有思想运用之别。PHP程序原创 2015-02-04 00:51:24 · 3023 阅读 · 1 评论 -
菜鸟学算法----改进后的欧几里得算法
对于正整数 a和b 利用欧几里得算法可以得出 一个最大公因数 , 改进后的算法满足 最大公因数 q=xa+yb ;那么我们如何求出 a和b呢 。书上是这么写的 那么我们用代码把他实现出来, 向大家推荐一本书《The Art Of Computer.Programmer》 第一篇的数学部分 真心的枯燥 我选择的方式 是 适当的囫囵吞枣 对于这一样 ,但是对于其中讲述的算法原创 2015-01-31 16:25:13 · 1437 阅读 · 0 评论 -
菜鸟学算法--简单的交换和最大公约数算法入门篇
工作之后我们大部分的时间实在研究如何如何学习一门语言 如何如何掌握一门技术,但是作为编程的本质 数据结构和算法 我们慢慢的忽略了 。工作后的很多程序员真的没有大学生一样的时间 去静下心来去增加自己的底蕴,这是我深有体会的事情当然我这里指的是和我有累死感觉的人。学习是一个过程,从简入繁 一贯如此,记录下来只为 记录自己的点点滴滴。#include "stdafx.h"#include原创 2015-01-31 14:15:36 · 1388 阅读 · 1 评论 -
转载 关于多线程MT和MD的区别。
这段时间司在招实习生,而不管是远程的电话面试或者是实际现场面试中领导都喜欢问你这个问题,但是可惜的是能很好答上来的人很少。后来发现不管是应届的实习生,甚至有些实际参加工作几年的人也未必真的了解这个问题。今天想写一篇详解,希望对广大程序员有一定的帮助。区别1:全局堆句柄不一样。 网上有一个说法,就是一个线程一个栈,一个模块一个堆。前者很容易有理解,每个线程创建的时候在CreateThread转载 2014-12-19 13:28:14 · 2179 阅读 · 0 评论 -
windows下VC界面 DIY系列1----写给想要写界面的C++程序员的话
很早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就马上开始刷博文,不能辜负自己的一番热血,我并不是写界面的高手,只想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈。能来到这里看我写文章,第一说明你是windows下开发的程序员!第二你对漂亮软件界面开发感兴趣!第三或许你也像我当初一样对C++软件界面开发 无所适从!或许我写的不专业,但是我只想让原创 2014-12-18 17:17:40 · 18685 阅读 · 10 评论 -
C++面试题算法
#include #include using namespace std ; /*题目:给一个字符串、例如 “ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。用C/C++语言写一函数完成该算法,给出复杂度这道题的最终目的是找到最长的连续字符串 */struct SubStringInfo{ int maxSubStrLength ;//最长原创 2013-06-28 03:02:06 · 5458 阅读 · 2 评论 -
今天同学找我给做C++作业 觉得这几个题还挺有意思的就发上来。。。
一、 定义复数类,要求: (1)属性定义为私有数据成员; (2)定义2个重载的构造函数:1)由参数传入实部(虚部默认为0),2)由参数传入实部和虚部; (3)为私有数据成员定义getXXX、setXXX函数; (4)定义显示信息函数,使用IO流显示对象的复数表示; (5)定义加、减、乘、除函数,实现2个复数的四则运算功能;原创 2011-11-05 21:31:44 · 1763 阅读 · 0 评论 -
SDK编程中有效区域与无效区域的盲区WM_PAINT消息何时发送的。。。
相信学过MFC或者写过 用MFC写过windows应用程序的人都知道 我们可以很简单的创建一个windows应用程序但是却 不知道其中的原理 利用SDK写windows程序的人 对内部原理比较了解但是对于上来就用MFC写程序的人来说 似乎 MFC底层不可触摸 ,因为微软原创 2011-10-15 17:27:11 · 1128 阅读 · 0 评论 -
MFC 编写自己的特色启动窗体...........
今天看到 VC上面有个能增加启动窗体的向导 不过那个利用向导做出来启动界面代码多 我们根本无从修改 于是我摸索着写了个 启动窗体 基于对话框的启动界面 界面 是一块一块的慢慢显示 ... 涉及到的函数 : srand((unsigned原创 2011-08-08 00:54:15 · 1789 阅读 · 0 评论 -
MFC窗体实现 F11全屏切换 2种方法
下面介绍2种方法 实现 F11 全屏切换窗体 ...... 相关函数 介绍 RepositionBars(0, AFX_IDW_PANE_FIRST, AFX_IDW_PANE_LAST, reposQuery , &enableClient); //这个原创 2011-08-07 01:44:34 · 2903 阅读 · 0 评论 -
MFC .。。CReBar 上添加工具栏背景
CReBae m_rebasr ; CToolBar m_wndToolBr; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT //设置背景为透明 来显示我们原创 2011-08-07 20:55:10 · 4327 阅读 · 0 评论 -
MFC SDI 中 通过注册表保存当前窗体的 显示状态位置
在 框架类响应 WM_CLOSE消息的时候添加如下代码 HKEY key; //用于接收注册表项句柄 WINDOWPLACEMENT info; //获得窗体位置状态信息 GetWindowPlacement(&info); //C原创 2011-08-04 15:04:00 · 2634 阅读 · 1 评论 -
MFC对话框禁止移动 使标题栏不响应鼠标消息 通过客户区移动窗体 OnNcHitTest()的实现
//这个函数允许我们对 windows鼠标消息进行处理 对于基类函数的返回值 我们可以通过判断消息类型来进行不同的处理//也就是说 我们可以对鼠标消息做任意处理 比如 是菜单栏上的消息 我们可以返回标题栏的值 //对应的消息类型有如下 查找MSDN此函数的 值原创 2011-08-03 23:19:46 · 8783 阅读 · 0 评论