自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (16)
  • 收藏
  • 关注

原创 boost网络编程(2)

      连接刚建立时,立即调用write_some写数据会不成功,对此我的解决办法是用async_write代替write_some函数,用async_write注册一个回调函数,检查write是否成功,不成功则再次调用async_write,这样循环知道写成功为止。      还需要注意的地方就是无论调用async_read还是async_write传递给的buffer参数一定要是new...

2013-12-25 11:55:13 635

原创 boost网络编程(1)

用boost进行网络编程,一般都会对底层进行封装,client,server之类的对象。    前面的5步完了之后,需要注意的就是传输过程,以及数据打包的问题。TCP数据传输都是字节流,顺序不会变,但是传的包不能保证一次收到。所以接收端就需要考虑拼包的问题。对于这个boost提供了很好的支持。    async_read,这个异步读取函数,这个函数能够在没有收到制定字节数数据时不返回。

2013-12-24 18:20:15 784

原创 boost网络编程一般需要的五步

第一,引入头文件和库文件,这个一定需要的,否则编译都不通过第二,声明一个全局的,或类成员变量的io_service对象,这是整个异步事件的根基,如果这个变量没了,所有异步事件都会出错第三,声明一个socket,这个socket需要io_service对象作为参数,因为socket要用来进行异步通信,所以少不了io_service这个根基第四,客户端跳过,服务端需要一个acceptor对

2013-12-23 19:07:23 1124

原创 boost::asio::socket::async_read_some

记录下今天发现的一个问题void CBoostSocket::connect_hander(const boost::system::error_code& err){if (err){return;}vector* buf = new vector(100,0);m_Sock.async_read_some(buffer(*buf),boost::bind(&

2013-12-20 16:21:42 5585

原创 boost::bind

bind的可以办到的两件事:    包装一个带有实参的函数    template    void work(T func)    {T f = func;f();     }    void print(int n,int m)    {cout    }    int _tmain(int argc, _TCHAR* argv[])    {

2013-12-19 10:53:11 614

原创 boost::asio::socket

boost的网络层在windows平台下是用iocp实现的,boost为了能够实现异步,实际上是利用了回调机制,就是在凡是会阻塞程序的函数accpet,recv,send中加入了一个回调函数作为参数,这样,程序尽管执行,所有其他操作由回调来完成,相对于boost中同步函数accept,read_some,write_some.在相对应的异步调用函数async_accept,async_read_s

2013-12-18 15:54:50 795

原创 boost::bind\boost::function

boost::function就是C++中的函数对象  一般的定义方法 : typedef boost::function  func;  func object;//定义了一个有两个int参数和一个void返回值的函数   在将func类型的函数对象当做参数传递时,需要用boost::bind来将函数打包成function函数对象后传入  比如函数:  void Print(

2013-12-18 10:26:06 646

原创 boost::thread

boost::thread最简单的使用 #pragma comment(lib, "E:\\Boost\\lib\\libboost_thread-vc90-mt-sgd-1_54.lib")  #pragma comment(lib, "E:\\Boost\\lib\\libboost_date_time-vc90-mt-sgd-1_54.lib") #pragma comment(

2013-12-17 15:25:40 1208

翻译 ASIO

基本了解       大多数程序员有很多种方式与其他程序打交道,文件,网络吗,串口,控制台等等。有时网络一个单独的IO操作需要很久才能完成。这给网络编程带来了很大的挑战。       Boost.Asio库提供很多工具用于管理这些耗时长的操作,而且不需要基于线程和锁的并发模型。       Boost.Asio库是为使用C++进行系统编程的程序员准备的,因为他们经常会需要网络。特别说明

2013-12-17 14:41:11 628

原创 SHUnicodeToAnsi SHAnsiToUnicode

这两个shell api用于unicode和ansi之间的转化非常方便用法 :        wchar_t* p =L"ddx";char buf[10] = {0};SHUnicodeToAnsi(p,buf,10);但是微软官方说有可能取消这两个API,win7上是可以用的,不知道Win8可用否。不过这个实在比MultiByteToWideChar方便了太

2013-12-11 17:03:26 1715

原创 SHGetFileInfo

SHGetFileInfo用于获取文件,文件夹,或者磁盘的信息用法: SHFILEINFO info = {0}; SHGetFileInfo("D:\\book",0,&info,sizeof(info),SHGFI_TYPENAME|SHGFI_DISPLAYNAME|SHGFI_ICON);  SHGFI_TYPENAME 获取类型信息,比如 文件夹  S

2013-12-11 15:24:53 1553

原创 Shell_NotifyIcon

这个shell api是给桌面右下角的任务状态栏发消息的,一般给程序添加托盘就是用这个函数来做。用法: 1.添加托盘图标     NOTIFYICONDATA ndata = {0};ndata.cbSize = sizeof(ndata);ndata.hIcon = m_hIcon;  //要添加的图标ndata.uFlags = NIF_MESSAGE|NIF_

2013-12-11 14:36:18 2045

原创 SHGetKnownFolderIDList

此shell api用于获取特殊位置文件夹的路径,比如桌面,common,我的文档等等。与此相似的有SHGetSpecialFolderLocation,SHGetFolderLocation,但是微软已经不建议使用这两个shell api了,他们的存在只是为了兼容vista之前的系统。SHGetKnownFolderIDList 的用法:ITEMIDLIST* pID

2013-12-11 11:28:28 1845

原创 SHParseDisplayName

这个shell api可以将普通的字串路径转换为shell 路径包装在ITEMIDLIST结构体当中,这个转换函数非常有用,因为在很多shell api中使用的并不是普通的字串路径,而是shell 路径,比如SHChangeNotifyRegister这个用来注册接收文件夹/文件修改消息函数中,监听的文件路径就是由shell 路径提供的SHParseDisplayName的用法:

2013-12-11 11:03:41 2718

原创 SHBrowseForFolder

SHBrowseForFolder最简单的用法char path[MAX_PATH] = {0};BROWSEINFO bi;ZeroMemory(&bi,sizeof(bi));bi.ulFlags = BIF_BROWSEINCLUDEFILES;LPITEMIDLIST pList = ::SHBrowseForFolder(&bi);       if(pList

2013-12-10 17:53:24 1021

原创 SHFileOperation操作文件

用SHFileOperation来操作文件时非常方便,比用其他的MoveFile,CopyFile之类的API要统一很多,但是在填写路径时要特别注意        char* From = "E:\\PS.txt\\\0"; \\字符串的结尾一定是需要\\\0这样一个串,否则操作会失败,微软的 文档上面说是这个参数是可以写入多个路径的

2013-12-10 17:27:00 844

NodeJsInvokeC++.zip

nodejs调用本地dll模块,为了快速开发,UI通过前端代码实现,核心逻辑由C++实现的dll模块提供。

2019-09-18

编译好的CPPCMS库

CPPCMS是一个C++ WEB库, 这个库在windows下编译的话会遇到很多问题, 而且会有VS版本兼容问题, 编译过程中要依赖很多工具。 上传一份打包好的库文件, 内部有使用说明。省去了配置编译的时间,方便在windows下开发。

2015-11-05

一个牛人写的QQ

一个牛人写的QQ,跟QQ界面几乎一模一样,可以用来学习。

2013-10-15

WTL所需头文件和开发例子

进行WTL界面开发所需要的头文件,还有个别的参考例子,非常好。

2013-10-08

Note记录板

可以随手记录东西的小工具代码,还需要完善,借CSDN的空间保存一下。

2013-07-18

图片拼接工具

可以用来拼接一些图片,项目中要拼接一些PNG的小图片,没有合适的工具自己写了一个。使用起来也比较简单。把自己想拼的小图片,拖上去,摆放好图片的位置,按Control + S 保存,不过现在只能保存为PNG格式的。

2013-06-17

CMake编译器

一个用来编译的工具,具体是怎么个过程也不清楚,就用来编译过FLTK

2013-04-20

FLTK界面库

FLTK一个轻型的界面库,非常好用,对于学习界面编程非常有用。与WX有不同的风格。

2013-04-20

wxWigets开源C++界面框架

wxWigets一个开源的C++界面框架,跟MFC一样是个界面库框架,可以跨平台。

2013-03-20

DX10实例代码

DX10 3D游戏编程 龙书上第二部分实例代码,可以用来学习DX10代码的编写,经典。

2013-01-24

DX10龙书用的APP框架

DX10龙书用的APP框架,帮助编写DX10代码。

2013-01-22

FoxReader阅读工具

一个PDF工具,感觉比ADOBE好用,传上来方便用。

2013-01-20

Pixel Light

一款游戏引擎Pixel Light,学习代码,增进对游戏编程的认识和技术。

2013-01-15

截图小工具

一个用来截屏的程序,很简单,没有图片的裁剪,直接COPY屏幕。图片是BMP格式。

2012-03-27

ColorSpy RGB获取工具

一款小巧的RGB值获取软件,有了她就不怕不知道图片上的RGB值了。非常好用。

2012-03-19

Windows游戏编程大师技巧(第二版)

一本学习Windows程序设计的好书,由简到难,循序渐进。从GDI到DDraw再到D3D。一步一步进入游戏编程世界。

2012-03-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除