
c++
文章平均质量分 54
-CQ-
这个作者很懒,什么都没留下…
展开
-
Kernel32--内核库函数提供的API
AddAtom 向本地原子表添加一个字符串AllocConsole 为当前进程分配一个新控制台AreFileApisANSI 确定一个WIN32文件函数集是否在使用ANSI或OEM字符集代码页BackupRead 向一缓冲区读进与给定文件相关联的数据BackupSeek 在访问数据流中向前搜索BackupWrite 将数据传送到指定的文件或目录中Beep 在扬声器上发出简单转载 2016-05-18 10:41:03 · 1104 阅读 · 0 评论 -
GDI图形设备接口
图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏幕输出。 GDI负责Windows的所有图形输出,包括屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面。1、三种图形输出类型 应用程序可以使用GDI创建三种类型的图形输出:矢量输出、位转载 2016-05-18 10:25:54 · 690 阅读 · 0 评论 -
C++ 信号量 多线程同步互斥
信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程 最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。在用CreateSemaphore()创建信号量 时即要同时指出允许的最大资源计数和当前可用资源计数。一般是将当前可用资源计数设置为最大资源计数,每增加一个线程对转载 2016-05-17 11:11:25 · 1106 阅读 · 0 评论 -
C++ 事件对象 多线程同步互斥
事件对象包含的几个操作原语: CreateEvent() 创建一个信号量 OpenEvent() 打开一个事件 SetEvent() 回置事件 WaitForSingleObject() 等待一个事件#include #define THREADCOUNT 4 HANDLE ghWriteEvent; HANDLE ghThreads[T转载 2016-05-17 11:13:27 · 412 阅读 · 0 评论 -
多线程编程之线程的封装
一. 多线程要考虑的问题前人总结出,一个线程安全的class应当满足的条件:1. 从多个线程访问时,其表现出正确的行为,无论操作系统如何调度这些线程,无论这些线程的执行顺序如何交织。2. 调用端代码无需额外的同步或其他协调动作在写多线程程序时脑子里要有这样的意识,下面我总结了几条比较具体的注意事项。使用多线程要考虑的问题:1. 线程访问资源转载 2016-05-17 10:50:49 · 1620 阅读 · 0 评论 -
多线程编程之临界区的应用
一 临界区特点临界区(Critical Section)是一段供线程独占式访问的代码,也就是说若有一线程正在访问该代码段,其它线程想要访问,只能等待当前线程离开该代码段方可进入,这样保证了线程安全。他工作于用户级(相对于内核级),在Window系统中CRITICAL_SECTION实现临界区相关机制。二 临界区相关函数:void InitializeCriticalSectio转载 2016-05-17 10:44:53 · 391 阅读 · 0 评论 -
PBOC借/贷记IC卡终端专用参数信息
PBOC借/贷记IC卡终端专用参数信息(PBOC IC Configation TableMessage)1.变量属性ANS...512(LLLVAR),3个字节的长度值+最大512个字节的数据。压缩时用右靠BCD码表示的2个字节的长度值+用ASCII码表示的最大512个字节的数据。2.域描述第一部分:认证中心公钥参数PBOC借/贷记IC卡终端下载其专用参数转载 2016-05-16 16:15:48 · 2108 阅读 · 0 评论 -
利用INF文件来修改注册表
利用INF文件来修改注册表 [Version]Signature="$CHICAGO$"[Defaultinstall]addREG=Gc[Gc]HKCU,"Software\Microsoft\Windows\CurrentVersion\Policies\system","disableregistrytools","0x00010001","1"在这里转载 2016-05-13 16:43:44 · 5746 阅读 · 0 评论 -
ActiveX控件实现安全的初始化和脚本
要想创建一个能够在IE中成功加载而没有“不安全”的警告或者错误提示信息的ActiveX控件,我们必须实现安全的初始化和脚本。基本上,所有要做的工作都是在DllRegisterServer 和DllUnregisterServer这两个函数中完成的。下面,我们就来一步步地将我们的ActiveX控件变成一个“安全的”控件。 1. 编辑XXX(此处为控件的工程名).cpp并添加如转载 2016-05-13 16:04:19 · 2051 阅读 · 0 评论 -
mfc调用activex
今天做了一下ActiveX的使用测试,总结一下:首先使用MFC创建一个activeX的控件譬如ActiveXTest,编译成ocx并注册,然后另外编写一个测试程序来调用该控件,发现有几种方式: 1:使用project-->Add to Project-->Components and Controls, 然后选择要加入的ocx或者dll,系统会自动生成.cpp和.h文件.并自动加入Af转载 2016-04-14 10:30:06 · 3951 阅读 · 0 评论 -
user32大全
函数名称 说明ActiveKeyboardLayout 激活一个不同的键盘布局,该布局必须先由LoadKeyBoardLayout函数装载AdjustWindowRect 根据希望的用户矩形大小来计算所需矩形窗口的大小,然后将该窗口矩形给CreateWindow函数,以创建所需的窗口AdjustWindowRectEx 根据希望的客户矩形大小来计算具有扩展式样的窗口所需转载 2016-05-18 10:46:11 · 4066 阅读 · 0 评论 -
Advapi32.dll 函数接口说明
函数原型 说明 AbortSystemShutDown 终止使用InitiatezSystemShutdown函数启 动系统 AccessCheck 服务器应用程序用该函数来控制验证客户对转载 2016-05-18 11:02:28 · 7218 阅读 · 0 评论 -
调用AdvApi32.dll中MD5算法的函数。
在Win2000/XP的AdvApi32.dll中实现了基本的Hash和RSA算法,但微软没有给出函数和数据的定义。下面演示MD5算法的调用。#include /* Data structure for MD5 (Message-Digest) computation */typedef struct { ULONG i[2];转载 2016-05-18 11:06:23 · 1546 阅读 · 0 评论 -
DES
1.DES算法简介 DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。 DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。 密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。 ...转载 2018-08-15 09:36:23 · 2306 阅读 · 1 评论 -
hash函数(SHA-256)的C++实现
//SHA-256/*理解算法最重要,最好自己动手实现试试看,可以使用MFC写一个简单的交互界面*/#include #include #include using namespace std;#define SHA256_ROTL(a,b) (((a>>(32-b))&(0x7fffffff>>(31-b)))|(a<<b))#define SHA256_SR(a,b) (转载 2017-10-25 09:11:54 · 15463 阅读 · 6 评论 -
RSA密码的C++实现
//RSA密码/*理解算法最重要,最好自己动手实现试试看,可以使用MFC写一个简单的交互界面*/#include #include #include #include using namespace std;//RSA算法所需参数typedef struct RSA_PARAM_Tag{ unsigned __int64 p, q; //两个素数,不参与加密转载 2017-10-25 09:11:14 · 3562 阅读 · 1 评论 -
DES密码的C++实现
//DES密码/*理解算法最重要,最好自己动手实现试试看,可以使用MFC写一个简单的交互界面*/#include #include #include #define BIT bool using namespace std; BIT K[16][48]; int //初置换 IP[64] = { 58 ,转载 2017-10-25 09:10:17 · 557 阅读 · 0 评论 -
四种古典密码的C++实现(4)-----Caesar密码
//Caesar密码/*理解算法最重要,最好自己动手实现试试看,可以使用MFC写一个简单的交互界面*/#include#includeusing namespace std;#define N 1000 //全局变量char str[100]; //用于存储处理前字符串char enstr[100]; //用于存储处理后字符串int num=0;转载 2017-10-25 09:09:20 · 1760 阅读 · 0 评论 -
四种古典密码的C++实现(3)-----Playfair密码
//Playfair密码/*理解算法最重要,最好自己动手实现试试看,可以使用MFC写一个简单的交互界面*/#include#includeusing namespace std;void encrypt(){ const int N=100; char letters[26]="ABCDEFGHIKLMNOPQRSTUVWXYZ";//用于填充矩阵 int f转载 2017-10-25 09:08:18 · 4018 阅读 · 2 评论 -
四种古典密码的C++实现(2)-----Virginia密码
//Virginia密码/*理解算法最重要,最好自己动手实现试试看,可以使用MFC写一个简单的交互界面*/#include #include using namespace std; #define MINCHAR 32 #define CHARSUM 94 char table[CHARSUM][CHARSUM]; bool Init(); bool Encode(char*转载 2017-10-25 09:07:42 · 2610 阅读 · 2 评论 -
四种古典密码的C++实现(1)-----Hill密码
//Hill密码/*理解算法最重要,最好自己动手实现试试看,可以使用MFC写一个简单的交互界面*/#include #include #include #include #include #include #include using namespace std;//定义一些常变量const int M = 26; //定义集合{a,b,...,z}的26个英文字母转载 2017-10-25 09:05:13 · 6251 阅读 · 1 评论 -
ANSI转UTF-8
说明:记事本txt有四种编码方式,分别为:UTF-8、ANSI、Unicode和Unicode big endian,当进行写操作,创建的txt编码格式,与写入汉字的编码方式相同;如果写入的汉字是不同的编码方式,此时创建的txt中,会出现乱码,所以需要把汉字转化为同一编码方式。本文主要介绍:把汉字编码方式,由ANSI方式转化为UTF-8方式:一、ANSI转化为UTF-8程序:转载 2017-09-06 09:53:56 · 836 阅读 · 0 评论 -
列举设备列表信息接口函数
SetupDiGetDeviceInterfaceDetail该函数返回设备接口的详细信息。WINSETUPAPI BOOL WINAPISetupDiGetDeviceInterfaceDetail(IN HDEVINFO DeviceInfoSet,IN PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,OU转载 2017-07-18 16:32:58 · 1013 阅读 · 0 评论 -
ATL 入门基础
1.新建atl项目2.默认选择下一步,点击完成3.添加c++类 选择 atl简单对象,点击下一步4.默认下一步5.勾选连接点6.打开类视图,选择itest,添加方法7.这里添加的方法是给外部使用的,例如添加add,输入要勾选in 参数类型不能是指针类型8.要添加输出参数先选择参数类型为指针类型,在勾选retval 再添加,就可以添加输出参数原创 2016-05-26 17:01:07 · 1108 阅读 · 0 评论 -
使用VS2010创建MFC ActiveX工程项目
1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。。。 ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动转载 2016-04-14 10:17:52 · 747 阅读 · 0 评论 -
遍历当前文件夹
int find_all_files(const char * lpPath){ char szFind[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFind,lpPath); strcat(szFind,"\\*.*"); HANDLE hFind=::FindFirstFile(szF转载 2016-04-14 10:14:21 · 808 阅读 · 0 评论 -
指针使用时注意事项
intia4[]={0,2,4,6,8};int *p = *ia4[2];p[-1]当下标为负数时,存的地址是当前指针指向数组的a【0】的值原创 2016-03-11 13:54:19 · 496 阅读 · 0 评论 -
STL--迭代器(iterator)使用详解
指针与数组指针与其它数据结构呢?比如说链表?存储空间是非连续的。不能通过对指向这种数据结构的指针做累加来遍历。能不能提供一个行为类似指针的类,来对非数组的数据结构进行遍历呢?这样我们就能够以同样的方式来遍历所有数据结构(容器)。迭代器(Iterator)是指针(pointer)的泛化,它允许程序员以相同的方式处理不同的数据结构(容器)。STL中有五种类型的迭代器,它们分转载 2016-02-03 15:46:48 · 536 阅读 · 0 评论 -
c++ vector
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=ve转载 2016-02-03 15:25:28 · 280 阅读 · 0 评论 -
const 使用
定义const变量 不能被修改const int i=0;//i的值不能被修改int const* ii = &i;//*ii的值不能被修改const int* ii = &i;//*ii的只不能被修改int*const iii = &i;//iii这个指针不能被修改const int * const iiii = &i;//iiii和*iiii都不能被修改1.在全原创 2016-01-28 15:37:46 · 344 阅读 · 0 评论 -
win32应用程序
原文地址:http://blog.youkuaiyun.com/tcjiaan/article/details/8497535我们要编写一个Win32应用程序,要经过哪几个步骤呢?你不妨想一想,你有一家工厂是生产女性服装的,如果你要生产一批新式服装(例如某种冬装),你会有哪些流程?首先,如果我们确定要做这么一款服式,我们要请设计师来把服装设计好,然后打版,打版就是生成基本样本,以后转载 2015-08-21 15:36:17 · 806 阅读 · 0 评论 -
vector用法
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vector::iterator it;for(it=vec.be转载 2015-09-07 14:22:11 · 354 阅读 · 0 评论 -
精度控制
c++精度控制输出#include "stdafx.h"#include #include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ double value = 1.2345678901; cout << value << endl; cout << setprecision(1) << value原创 2015-09-07 14:12:55 · 458 阅读 · 0 评论 -
类型转换
#include "stdafx.h"#include #include #include int _tmain(int argc, _TCHAR* argv[]){ double *doub = new double(); *doub = 123; char* ch = new char[256]; _itoa_s((int)*doub, ch, 256,10); pr原创 2015-03-30 11:08:51 · 389 阅读 · 0 评论 -
在串口通信开发中实现自动查找串口端口的方法
开发工具:visual studio 2010本机可用串口信息如下:1 、查询注册表 查询注册表的方法是比较常见的方法,通过查看“ HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM ”项来获取串口信息。该方法就是使用编程方法读取注册表内信息,相当于用户通过在运行框内输入 ”regedit” (或 regedit32 )直接打开转载 2015-03-25 09:09:46 · 390 阅读 · 0 评论 -
socket 编写
客户端#include <WinSock2.h>#include <stdio.h>#pragma comment(lib,"ws2_32.lib")void main(){ WSAData wsadata; WSAStartup(MAKEWORD(2,2),&wsadata); int sock = socket(AF_INET,SOCK_S...原创 2015-03-24 13:55:01 · 467 阅读 · 0 评论 -
a++ 和++a注意事项
a = 1;a++ 先运算,在++,++a先++在运算b = a++;b=1,a=2;b = ++a;b=2,a=2;b= a++ + ++a;b=4,a=3;原创 2015-03-24 13:52:24 · 602 阅读 · 0 评论 -
单向链表 双向链表
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;typedef struct list{ int num; list *next1;}listtest;int _tmain(int argc, _TCHAR* argv[]){ l原创 2015-03-27 11:54:29 · 470 阅读 · 0 评论 -
冒泡查找
int num[20] = {.....}int k = 20;for(int i=0;i{ for(int j = i + 1; j { if(num[i] > num[j]) { int m = num[i]; num[i] =原创 2015-03-26 10:58:13 · 1031 阅读 · 0 评论 -
折半查找,插入
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include int _tmain(int argc, _TCHAR* argv[]){ int num[5] = { 1, 3, 5, 7, 9 }; int* num1 = (int*)malloc(sizeof(int) * 6); int*原创 2015-03-26 11:16:34 · 506 阅读 · 0 评论