C/C++基础
long12310225
多年Linux,Windows平台开发
展开
-
DLL(动态链接库)
0. Windows API中所有的函数都包含在dll中,其中有3个最重要的DLL。 (1) Kernel32.dll 它包含那些用于管理内存、进程和线程的函数,例如CreateThread函数; (2) User32.dll 它包含那些用于执行用户界面任务(如窗口的创建和消息的传送)的函数,例如Cr原创 2017-09-01 12:56:29 · 369 阅读 · 0 评论 -
两种方法实现MFC 对话框最大化时控件也随比例最大化或者还原
方法一:单个控件ID操作第一步、在对话框类中(.h文件)定义如下变量和函数定义如下几个变量:[cpp] view plain copyvoid ReSize(int nID); BOOL change_flag; float m_Multiple_height; float m_Multiple_width;原创 2017-08-31 09:04:23 · 298 阅读 · 0 评论 -
嵌入Chrome cef之完整版(本教程基于cef1)
本教程基于cef1至于cef1与cef3的区别请参考基于.net开发chrome核心浏览器【二】中的关于cef的介绍http://blog.csdn.NET/tts2game/article/details/17260865总结之前先将我的参考资料整理如下1:嵌入Chrome cef到MFC CView http://blog.c转载 2017-08-31 09:01:52 · 608 阅读 · 0 评论 -
在mfc中使用cef实现webkit的浏览器(二)-修改项目属性
配置属性-》MFC的使用 设置为"在静态库中使用MFC"VC++目录 包含目录 添加 include 这个目录C/C++ => 预编译头 => 不使用编译头代码生成 => 运行库 => 多线程调试 (/MTd)链接器 => 输入 => 附加原创 2017-08-31 09:00:02 · 3009 阅读 · 0 评论 -
在mfc中使用cef实现webkit的浏览器(一)-准备工作
首先,下载一个cef的开发包,我下载的是 cef_binary_3.2171.1901_windows32 这个版本的(下载链接)。下载完成解压后,用vs打开,编译其中的 libcef_dll_wrapper 这个项目。编译成功后,在\out\Debug\lib 这个目录里会生成一个文件:libcef_dll_wrapper.lib,这个文件在开发我们项目的时候会使用。原创 2017-08-31 08:58:00 · 5074 阅读 · 0 评论 -
MFC对话框应用程序中谷歌CEF浏览器内核的使用
MFC对话框应用程序中谷歌CEF浏览器内核的使用 最近在做一个与浏览器相关的MFC项目,用户要求使用IE和谷歌双内核。对于IE内核可以直接使用MFC中的ACTIVEX控件,但是对于谷歌浏览器内核却并没有这么现成的控件可以使用。原来是想要自己编译WebKit做相关dll的,但是查阅相关资料后发现编译WebKit不是一个短期内能够完成的任务。后来无意间在网上找到了CEF。它是对We原创 2017-08-31 08:50:27 · 976 阅读 · 0 评论 -
rapidjson简单使用
#include#include#include#include#include "rapidjson/document.h"#include "rapidjson/prettywriter.h"#include "rapidjson/stringbuffer.h"using namespace std;#define CONFIG_JSON "{\"Par原创 2017-08-24 09:20:51 · 1066 阅读 · 0 评论 -
window遍历INI
void EnumIniFile(LPCTSTR pFilePath, CString strKey,map& map_Key){// TODO: Add your control notification handler code hereTCHAR strAppNameTemp[4096];//所有AppName的返回值TCHAR strKeyNam原创 2017-08-24 09:19:29 · 235 阅读 · 0 评论 -
Linux遍历INI
头文件:#include编译选项:-lminiiniINIFile ini;FILE* f=fopen(AUTHINI,"a+");if(f){ fseek(f, 0L, SEEK_END); if(ftell(f) { fclose(f); return; }}原创 2017-08-24 09:18:59 · 224 阅读 · 0 评论 -
MD5
md5_2使用方法:MD5 md5(szbuf);std::string result = md5.md5();原创 2017-08-24 09:13:30 · 365 阅读 · 0 评论 -
VC共享内存实现进程间数据的交换
共享内存的使用 在Windows操作系统下,任何一个进程不允许读取、写入或是修改另一个进程的数据(包括变量、对象和内存分配等),但是在某个进程内创建的文件映射对象的视图却能够为多个其他进程所映射,这些进程共享的是物理存储器的同一个页面。因此,当一个进程将数据写入此共享文件映射对象的视图时,其他进程可以立即获取数据变更情况。为了进一步提高数据交换的速度,还可以采用由系统页文件支持的内存映射原创 2017-08-31 09:05:10 · 1488 阅读 · 0 评论 -
VC6.0 MFC点击编辑框弹出对话框
在写界面的用于触屏时,往往需要编辑框弹出盘来进行输入,下面就将我思路写一下吧,1.刚开始在网让找一些这方面的资料,结果在论坛中有发现这样一个帖子,见面的链接:http://topic.csdn.net/u/20100630/15/728f2d71-6958-44ab-802e-e0dbc23f2e58.html看过之后有一些思路,就是派生一个编辑框类,在派生的类中处理P原创 2017-08-31 09:10:17 · 2260 阅读 · 4 评论 -
VS2008编译boost库
一、下载首先从boost官方主页http://www.boost.org/下载最新版boost安装包,我用的版本是boost.1.49.0二、新建文件夹 如果是使用下载的安装包,那么请将boost安装包解压至本地新建的目录,如:F:\boost三、编译(1)从vs2008的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指向“Microsoft原创 2017-08-31 09:11:22 · 222 阅读 · 0 评论 -
VS2010 C++ 操作Excel表格的编程实现
通过VC实现对Excel表格的操作的方法有多种,如:通过ODBC数据库实现,通过解析Excel表格文件,通过OLE/COM的实现。本文主要研究通过OLE/COM实现对Excel表格的操作。 本文源码的应用环境说明:Windows XP SP3Microsoft Visual Studio 2010Microsoft Office Excel 2007原创 2017-09-01 12:56:11 · 516 阅读 · 0 评论 -
Unicode字符与多字节字符的转换
第一个就是宽字符到多字节字符转换函数,函数原型如下: int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar,原创 2017-09-01 12:55:44 · 577 阅读 · 0 评论 -
VC获取打印机与打印作业的状态
VC 获取打印机与打印作业的状态#pragma comment(lib, "winspool.lib")#include "stdafx.h"#include #ifndef _MAX_PATH#define _MAX_PATH 260#endifTCHAR m_tchPrinterMessage[_MAX_PATH];/// /// 获取打印作业的状态BO原创 2017-09-01 12:55:19 · 1753 阅读 · 0 评论 -
DLL如何导出类?
其实最好是写一个父类,把要实现的函数全部以虚函数的形式写在父类中,然后写一个子类,继承父类,重写父类的虚函数。这样的话就安全得多了。其次就在DLL中导出一个函数,返回父类的一个对象指针,再在EXE中动态链接DLL,调用导出函数。例子如下://以下是DLL的代码//class_a.hclass A{ public: virtual void fun()原创 2017-09-01 12:54:53 · 879 阅读 · 0 评论 -
CListCtrl控件
1. CListCtrl 样式及设置2. 扩展样式设置3. 数据插入4. 一直选中Item5. 选中和取消选中Item6. 得到CListCtrl中所有行的checkbox的状态7. 得到CListCtrl中所有选中行的序号8. 得到item的信息9. 得到CListCtrl的所有列的header字符串内容10. 使CList原创 2017-09-01 12:54:31 · 289 阅读 · 0 评论 -
Access 连接字符串代码
标准安全策略 Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\mydatabase.mdb;Uid=Admin;Pwd=; 工作组 Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\mydatabase.mdb;SystemDB=C:\\mydatabase.原创 2017-09-01 12:54:10 · 666 阅读 · 0 评论 -
VS2008+Boost+1_47_0+STLPort-5.2.1安装及使用配置
一.编译安装STLPort1、从STLPort官网http://www.stlport.org/下载STLport-5.2.1.tar.bz2,使用WinRar或其他工具将其解压到硬盘任何位置,本人解压到了C:\STLport,当然您也可以解压到其他路径中。补充说明下,截止本文发布时间,STLport最新稳定版为5.2.1。2、进入Visual Studio 2008命令行原创 2017-09-01 12:53:46 · 283 阅读 · 0 评论 -
WinInet编程
客户端从HTTP服务器下载相应的MP3文件的核心代码(HTTP中的GET方法):#include Windows.h>#include wininet.h>#pragma comment(lib, "wininet.lib")#define URL_STRING_TEST "http://eng.edu-edu.com.cn/audio/Onelove.mp3"void原创 2017-09-01 12:53:18 · 214 阅读 · 0 评论 -
DES加密解密
使用方法#define DES_KEY "mykey"char bitsCiphertextAnyLength[32768];char hexCiphertextAnyLength[16384];char szPlaintextData[8192];char szCiphertextData[8192];DES2 * my_des =原创 2017-08-24 09:10:00 · 750 阅读 · 0 评论 -
Linux C++动态库so调用实例
test.cpp#include "stdio.h"extern "C"{ void print();}void print(){ printf("songbai");}class Lynn{ public: Lynn();};编译:原创 2017-08-24 09:05:23 · 2028 阅读 · 1 评论 -
创建共享内存分以下几个步骤
创建共享内存分以下几个步骤: 1.定义共享内存的结构体; 2.利用CreateFileMapping函数创建共享内存; 3.定义指向共享内存结构体的指针pShareMem,利用MapViewOfFile函数将刚刚创建的内存映射到定义指针pShareMem。 读写共享内存分以下几个步骤: 1.定义共享内存的结构体;原创 2017-08-23 11:16:03 · 3581 阅读 · 0 评论 -
TCP/IP详解学习笔记(7)-广播和多播,IGMP协议
1.单播,多播,广播的介绍1.1.单播(unicast)单播是说,对特定的主机进行数据传送。例如给某一个主机发送IP数据包。这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来 说,就是网卡的MAC地址(不是FF-FF-FF-FF-FF-FF这样的地址)。现在的具有路由功能的主机应该可以将单播数据定向转发,而目的主机的网 络接口则可以过滤掉和自己MAC地址不一致的数转载 2017-08-22 09:12:01 · 123 阅读 · 0 评论 -
TCP/IP详解学习笔记(6)-UDP协议
1.UDP简要介绍UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。2.UDP协议头2.1.UDP端口号由于很多软件需要用到UDP协议,所以UDP协议必须通过某个标志用以区分不同的程序所需要的数据包。端口号的功能就在于此,例如某一个UDP程序A在系统中注册了3000端口,那么,转载 2017-08-22 09:11:23 · 215 阅读 · 0 评论 -
TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节
1.静态IP选路1.1.一个简单的路由表选路是IP层最重要的一个功能之一。前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由。这里就不重复了。首先来看看一个简单的系统路由表。Destination Gateway Genmask Flags Metric Ref Use Iface192.168转载 2017-08-22 09:10:50 · 162 阅读 · 0 评论 -
TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute
1.IMCP协议介绍前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原转载 2017-08-22 09:10:21 · 206 阅读 · 0 评论 -
TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息。数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息。1.IP协议IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数转载 2017-08-22 09:08:41 · 154 阅读 · 0 评论 -
TCP/IP详解学习笔记(2)-数据链路层
数据链路层有三个目的:为IP模块发送和 接收IP数据报。为ARP模块发送ARP请求和接收ARP应答。为RARP发送RARP请 求和接收RARP应答ip大家都听说过。至于ARP和RARP,ARP叫做地址解析协议,是用IP地址换MAC地址的一种协议,而RARP则叫做逆地址解析协议,在tcp/ip协议的后面章节会介绍它们(在局域网里面用ARP协议可以很容易的搞瘫痪网络哦)数据链路转载 2017-08-22 09:08:08 · 215 阅读 · 0 评论 -
TCP/IP详解学习笔记(1)-基本概念
为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。但是简单的连到一起是远远不够的转载 2017-08-22 09:06:51 · 180 阅读 · 0 评论 -
信号量
Linux版头文件:#include 声明:sem_t sem;初始化:sem_init(&sem,0,1024);等待信号:sem_wait(&sem); 发送信号:sem_post(&sem); 销毁信号:sem_destroy(&sem);Window版声明原创 2017-08-21 10:50:11 · 168 阅读 · 0 评论 -
临界区互斥锁
Linux版头文件:#include 声明互斥锁:pthread_mutex_t cs_msg;初始化互斥锁:pthread_mutex_init(&cs_msg,0);或者 cs_msg= PTHREAD_MUTEX_INITIALIZER;进入互斥锁:pthread_mutex_lock(&cs_msg);退出互斥锁:pthread_mutex_un原创 2017-08-21 10:49:17 · 229 阅读 · 0 评论 -
TCP/IP详解学习笔记(8)-DNS域名系统
前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要用一个指定的IP来访问一台计算机,而IP地址又非常不好记,于是就出现了DNS系统1.DNS系统介绍DNS的全称是Domain Name System。它负责把FQDN(就是以"."分隔结尾的名字)翻译成一个IP。最初的DNS系统使用转载 2017-08-22 09:12:34 · 137 阅读 · 0 评论 -
TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读。前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西。TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个“拨打电话”的过程,等到通信准备结束才开始传输数据,转载 2017-08-22 09:13:17 · 115 阅读 · 0 评论 -
TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流
目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等。这些协议又可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等。(2)数据成块类型,例如ftp,这种类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大,并尽可能的提高效率。针对这两种情转载 2017-08-23 11:09:20 · 141 阅读 · 0 评论 -
C语言使用popen获得FTP命令的输出信息
/*** Description: ftp工具 ** Input_parms: ip 目标系统IP地址** user 目标系统用户名** pass 目标系统密码** dpath 目标系统存原创 2017-08-23 11:15:28 · 1004 阅读 · 0 评论 -
sqlite3-入门日记4-实现C++类封装
一、前言: 今天试了下如何用C++类实现接口封装,感觉蛮好 。用于封装的类主要有两个,SQLiteStatement类和SQLiteWrapper类,是一个老外写的。我看了下源码,主要是对C接口进行了封装,好处自然不用说,可以重用。很佩服老外的技巧,在这里就引用下他们的代码供大家分享下他们的思想。源代码链接: http://www.adp-gmbh.ch/sqlite/wrapper转载 2017-08-23 11:14:46 · 1171 阅读 · 0 评论 -
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
(1)安装freeTDSFreeTDS为Linux系统提供了TDS协议的开源客户端。由于MS SQL和Sybase使用的恰是TDS协议,所以在Linux中可以用FreeTDS连接MS SQL。官网:http://www.freetds.org下载:wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-sta转载 2017-08-23 11:14:10 · 668 阅读 · 0 评论 -
Linux Pthread 深入解析
Outline - 1.线程特点- 2.pthread创建- 3.pthread终止 - 4.mutex互斥量使用框架 - 5.cond条件变量 - 6.综合实例====================================================================================原创 2017-08-23 11:12:39 · 727 阅读 · 0 评论