C/C++
文章平均质量分 85
henreash
Think Differently.
展开
-
CreateCompatibleDC,CreateCompatibleBitmap,SelectObject详解
物理HDC 设备底层会拥有显存等资源,但是兼容DC并没有给图像像素提供内存空间,因此兼容DC总是和BITMAP配合使用,这样一来,兼容DC就利用BITMAP的图像像素数据空间给自己提供类似于显存的内存空间.这样有很多好处,以来我们可以在加载图片后,在图片上利用DC的各种绘图功能.请看如下示例:兼容DC在建立之初,只有1*1像素的尺寸,SelectObject选择bitmap以后才可转载 2013-11-22 17:36:21 · 5203 阅读 · 0 评论 -
VC++ MFC文件,文件夹操作整理
文件属性相关1.判断文件是否存在利用CFile类和CFileStatus类判断CFileStatus filestatus;if (CFile::GetStatus(_T("d://softist.txt"), filestatus)) AfxMessageBox(_T("文件存在"));else AfxMessageBox(_T("文件不存在"));利转载 2013-09-18 10:28:52 · 1229 阅读 · 0 评论 -
FFMPEG详细参数
FFmpeg HowtoTable of Contents * Generic Syntax * Main Options * Encoding : o D10 (aka Sony IMX) o DVCAM / DVCPRO25 / DVCPRO50 o VC-3 (aka Av转载 2013-08-14 11:52:56 · 9616 阅读 · 0 评论 -
在windows下使用MinGW编译ffmpeg0.6
眼下,网上关于ffmpeg编译的博客帖子很多,但绝大多数是过时的,已经无法使用的。这些过时的教程会浪费大家很多时间,至少我就浪费了1天。 (1)编译ffmpeg0.6 由于FFmpeg是在Linux下开发的,它用gcc来编译,要在windows下编译的话,就需要在windows下建立linux的环境,因此我们要使用mingw。 mingw是ffdshow项目创建,到今转载 2012-11-14 12:04:53 · 1854 阅读 · 0 评论 -
Qt新动向
刚浏览了一下digia的网站,看到一个关于Qt支持android进展的blog。预计2013年初的Qt5版本中会发布android版,很不错,到时候在尝尝鲜。博客上说现在已经有很多人在使用Qt for android版本了,呵呵,期待啊,最近太忙了,等正式版出来再说。Together with BogDan Vatra, the main author of the Qt for Androi原创 2012-11-09 22:56:56 · 2346 阅读 · 1 评论 -
C++ stream总结
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin转载 2012-05-04 10:04:42 · 15692 阅读 · 0 评论 -
QT GUI总结
QT提供了设计师工具,可以很方便的使用鼠标拖拽的方式绘制界面。绘制完毕后自动生成一个界面的.h文件(如ui_mainwindow.h),其中含有一个自动生成的Ui_MainWindow类,这个类中核心的函数是setupUi,根据界面向导的不同里面接收一个QWidget *参数或者QMainWindow *参数。这个函数会自动在传入的QWidget或QMainWindow上根据设计师绘制的界面创建可原创 2011-11-03 17:08:00 · 24555 阅读 · 5 评论 -
Qt调用WebService
从网上查找Qt调用WebService的方案,需要下载三方的类库,而且需要使用好几个控制台命令,才能生成代理客户端类.因为只是简单的测试,没有采用这种方式,直接使用HTTP的Get获取网站内容,也非常简单,调用开放的翻译WebService接口.代码如下: QEventLoop loop;//事件循环对象,在任何时候,你都可以创建一个QEventLoop的对象,然后调用它的exec(原创 2012-06-08 12:55:12 · 10448 阅读 · 4 评论 -
使用QT实现MDI风格的主窗体
QT提供了MDIArea控件可以很方便的实现标准的MDI窗体,但用起来并不方便.感觉像360浏览器一样通过页签来切换子窗体的方式比较好.点击菜单项或工具栏上的按钮创建新的页签,并生成一个子窗体.点击页签上的叉号关闭页签并释放子窗体对象.为了实现这种风格的MDI,可以借助QT的TabWidget控件,设置其tabsClosable属性为true,即可在页签上显示叉号.点击页签上的叉号时出发tabWi原创 2012-05-31 09:21:58 · 15952 阅读 · 8 评论 -
Boost::asio范例分析 服务端线程池实现
在http范例的server2实现中引入了线程池,server2的业务逻辑实现与server1相似.这里只分析与线程池有关的代码. main函数中添加了一个额外的参数指定线程池大小.并在server类中声明了一个线程池类成员io_service_pool io_service_pool_;这个类的构造函数接收一个整型参数io_service_pool_size指定线程池大小.在server类原创 2012-05-14 09:38:12 · 9881 阅读 · 4 评论 -
Boost::asio范例分析 服务端
main函数要求程序调用者传递3个参数:服务器IP地址,端口号和文档根目录.其中IP地址可以是IPv4或IPv6格式.接着创建server对象实例,将传递进来的IP地址,端口号,文档根目录作为server对象的构造函数参数传递到处理程序中.最后调用server的run成员函数启动服务端处理例程. http::server::server s(argv[1], argv[2], argv[原创 2012-05-13 11:23:14 · 19762 阅读 · 4 评论 -
Boost::asio范例分析 客户端
为了方便描述,这里只分析一下同步实现,异步实现方式和同步方式的流程是一致的,只是在函数调用的方式上有些区别.分析清楚了同步方式,在看异步实现,也很容易. 这个HTTP范例实现了客户端向服务端请求文件内容的功能,客户端给出一个文件名称,服务端在本地寻找文件,并将文件内容(文本文件)返回给客户端. main函数首先检查传递给exe执行文件的参数,第一个参数是服务端的IP地址,第二个参数是请原创 2012-05-12 13:25:37 · 7324 阅读 · 1 评论 -
qt+boost::asio+tcp文件传输
客户端:void qt_boost::pbSendFileClicked(){ QString filename = ui.leFileName->text(); QByteArray ba = filename.toLatin1(); char * pfilename = ba.data(); std::ifstream ifs(pfilename, ios::in|io原创 2012-05-04 14:17:02 · 10489 阅读 · 3 评论 -
C字符串函数汇总
// Test1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include "malloc.h"#include #include #include int _tmain(int argc, _TCHAR* argv[]){/*=====================串长度(原创 2012-04-16 11:23:01 · 1490 阅读 · 0 评论 -
vs2008+QT+asio tcp客户端测试程序
今天尝试在QT项目中使用asio作为网络通信库,直接将asio的echo同步tcp客户端范例代码移到QT项目中后编译,说WinSock.h已经被包含过,编译不过去.将所有与asio相关的include语句放在最前面,解决了编译问题.但是代码智能提示没有了,好郁闷.查找了很多资料也没有找到解决方法,没办法将所有boost的代码重新编译一次,还是不行.新建一个QT项目,向其中引入boost/array原创 2012-04-19 16:57:29 · 4917 阅读 · 1 评论 -
QT实现不规则窗体
看到网上有很多不规则窗体的实现,效果很酷.于是使用QT也实现了一个,QT的不规则窗体实现非常简单,只需要设置一个mask(遮掩)图片,这个图片的格式可以使用png或bmp格式,我使用了png格式,默认窗体是矩形的,使用png图像,将需要隔离在窗体之外的区域的像素设置为白色或透明色,其他颜色的区域对应显示出来的窗体.关键代码就几行.#ifndef IRREGULARFORM_H#define原创 2012-05-31 10:38:39 · 17298 阅读 · 19 评论 -
Boost.Asio技术文档
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt)Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步翻译 2012-04-17 15:27:33 · 25504 阅读 · 5 评论 -
利用opencv提取Hu不变量特征 形状匹配 机器学习识别手写数字 傅里叶变换
void GetHu(string image_path) { IplImage *src_image = cvLoadImage(image_path.c_str(),0); CvMoments moments; CvHuMoments hu_moments; cvMoments(src_image, &moments,0);转载 2012-09-15 12:15:08 · 8444 阅读 · 1 评论 -
VS2008 MFC开发总结
使用Delphi开发工具好多年了,总体上还是从事信息管理系统的开发.总想深入的研究一下其他方向,例如游戏或内核级的编程.但都由于看到C,C++,VC等因素而退却了.Delphi确实优秀,但也能让人懒惰,想实现什么功能了,就去网上搜索现成的控件.当然也偶尔出于好奇,查看这些控件的源码,并对其加以修改,满足开发的要求.自我感觉已经掌握了控件的内部实现原理了,但如果要自己去从新实现控件的功能,却未必是一原创 2012-06-29 09:50:49 · 9161 阅读 · 2 评论 -
Win或Linux中编译安装软件的命令解析: configure; make; make install
原文地址:http://www.cnblogs.com/Jerry-Chou/archive/2010/12/18/1909843.html翻译一篇文章,我最早从这篇文章中了解到为什么Linux平台上,从源代码安装软件通常都需要这三步:./configure, make, make install 。译文如下:我总是听人们说,通常只要使用configure, make, mak转载 2012-08-23 11:51:25 · 5415 阅读 · 0 评论 -
vs2008编译QT,Boost,OpenCV步骤记录
最近重做了一台机器的系统,在上面安装了VS2010,VS2008,结果无法使用命令行重新编译QT,总是报无法找到windows.h,但使用vs2008创建QT项目并编译运行都是正常的.后来卸载了vs2010并修复vs2008,还是不行.没办法直接还原系统,只安装vs2008,QT编译正常了.从网上查找无法找到windows.h单元的原因,说是windows SDK路径混乱了,那应该是我同时安装了v原创 2012-08-23 12:42:24 · 2684 阅读 · 0 评论 -
vs2008编译QT开源项目--太阳神三国杀源码分析(四) 动画
太阳神三国杀中,每当玩家出杀或吃桃子时,就会有一个动画效果,使界面非常生动绚丽.现在我们就分析一下QT中动画的原理,及实现方式,这里我们只分析吃桃子时的动画效果实现.由于三国杀有多个在线玩家同时游戏,因此当一个玩家吃了桃子,会将这个消息发送给服务器,服务器在分别通知每个在线玩家,使玩家界面出现吃桃子的动画.现在我们来跟踪一下代码的执行流程.在NativeClientSocket::init()原创 2012-08-16 16:46:29 · 3129 阅读 · 0 评论 -
QT范例解析
首先记录一个很牛的C++ QT博客http://www.cnblogs.com/hicjiajia/category/350988.htmlQT动画在QT自带的demo中,有个一个2dpainting的范例,这个例子可以很好的阐述QT简单的动画效果机制。在main函数中创建一个Window对象实例,这个类是从QWidget继承来的,其构造函数中创建一个Widget类型对象,并创原创 2012-08-28 20:20:02 · 5068 阅读 · 0 评论 -
VC在MDI方式下自由生成自定义的子窗口
转自 http://blog.csdn.net/vlily本文介绍如何删除由MFC AppWinzard工程中产生的文档/视图结构,同时根据自己的实际需要创建子窗口界面。Visual C++ 开发系统中应用程序向导的标准设置允许应用程序开发者方便简单地创建多种基于DOC/VIEW结构的应用程序,但在实际软件开发过程中,总是感觉由向导生成的程序控制起来比较麻烦,因此希望对有AppWi转载 2012-08-29 12:45:14 · 2566 阅读 · 0 评论 -
vs2008编译QT开源项目--太阳神三国杀源码分析(五) 分牌及出牌
游戏开始时选择武将后,服务端统一控制向玩家分发初始手牌,并向客户端发生绘制手牌的命令.跟踪的流程如下:服务端向客户端发送命令drawCards及随后的一串使用加号(+)连接起来的牌编号(drawCards 91+50+112+100+42+133+43+78).客户端解析这个命令串后调用drawCards函数(原理在上面的系列分析中已经阐述),并使用后面的字符串作为参数,在drawCards函数中原创 2012-08-18 10:06:34 · 3941 阅读 · 0 评论 -
vs2008编译QT开源项目--太阳神三国杀源码分析(三) 皮肤
太阳神三国杀的界面很绚丽,界面上按钮的图标,鼠标移入移出时图标的变化,日志和聊天Widget的边框和半透明等效果,既可以通过代码来控制,也可以使用皮肤文件qss进行控制.下面我们分析一下三国杀的qss文件.在main.cpp中可以看到如下几句关键代码:QDir::setCurrent(qApp->applicationDirPath());//设置当前目录为程序的可执行文件所在目录 /原创 2012-08-15 11:14:08 · 6732 阅读 · 0 评论 -
vs2008编译QT开源项目--太阳神三国杀源码分析(二) 客户端添加武将
接着上篇文章继续分析,我们来看看进入到roomScene(房间场景)后,点击add a robot按钮,是如何创建武将的.首先找到add to robot按钮的创建代码: add_robot = new Button(tr("Add a robot")); add_robot->setParentItem(control_panel); add原创 2012-08-14 15:34:00 · 4434 阅读 · 0 评论 -
asio中异步IO的体会
想在QT的程序中使用asio库实现异步IO操作,服务端是按照asio的http范例改写的,没什么问题.而客户端基本上都是采用同步方式.那么我能不能在客户端采用异步方式呢?第一感觉是肯定可以,而且会很简单的就能实现. 那就将客户端的IO操作改写为异步的吧.首先在客户端的主界面类中声明一个io_service指针,而后在主界面类的构造函数中初始化并调用其run()方法,在按钮的事件处理函数中调用原创 2012-08-09 17:25:13 · 9310 阅读 · 0 评论 -
vs2008+QT+asio tcp服务端测试程序
有了客户端的扫雷,创建服务端还是比较顺畅的,直接将客户端需要include的头文件加进来,额外添加一个#include 头文件(注:#include 文件未包含在#include 中.)由于asio服务端需要在一个线程中启动异步操作,即一个死循环等待socket事件,因此需要创建一个线程,这里使用QT的线程支持即可.创建QThread的子类,重写其run()虚函数,在里面调用io_service:原创 2012-04-24 18:35:00 · 4078 阅读 · 0 评论