- 博客(186)
- 收藏
- 关注
原创 Timer例子
#include #include #include #include void onTime(int sock, short event, void*arg){std::cout << "On Timer" << std::endl;}int main(){#ifdef _WIN32WORD wVersionRequested;WSADATA wsaData;wVersionRequested
2017-03-06 12:08:51 624
转载 内存映射文件
一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只硬盘上文件的位置与进程逻辑地址空间中一块大小相同的区域之间的一
2014-12-02 17:11:43 783
转载 构造函数调用顺序
C++构造函数调用顺序1、创建派生类的对象,基类的构造函数函数优先被调用(也优先于派生类里的成员类);2、如果类里面有成员类,成员类的构造函数优先被调用,静态成员优先调用;3、基类构造函数如果有多个基类则构造函数的调用顺序是某类在类派生表中出现的 顺序而不是它们在成员初始化表中的顺序;4、成员类对象构造函数如果有多个成员类对象则构造函数的调用顺序是对象在类
2014-11-27 16:46:58 2110
转载 C++成员函数的隐藏、覆盖和重载。
成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖:派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)
2014-11-27 13:36:36 637
转载 C++ 继承内存模型
今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译 译者前言 一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ Obj
2014-11-26 14:38:03 1741 1
转载 Qt 事件与循环,和QEventLoop
1、事件循环一般用exec()函数开启。QApplicaion::exec()、QMessageBox::exec()都是事件循环。其中前者又被称为主事件循环。事件循环首先是一个无限“循环”,程序在exec()里面无限循环,能让跟在exec()后面的代码得不到运行机会,直至程序从exec()跳出。从exec()跳出时,事件循环即被终止。QEventLoop::quit()能够终止事件循环。
2014-10-21 17:34:12 5265 1
转载 P2P通信
在传统的集中式网络中,都是一台服务器(集群)对外提供服务,所有客户端都依赖中央服务器进行与服务端的通信或者其他客户端的通信。如图 这样的通信方式,一个数据包从一个客户端发送到另一个客户端都要在服务端中进行中转,服务端承受的压力非常大,很容易因为线程问题而当机。 于是提出另一种通信方式:P2P通信(peer to peer) 对等通信。 即:在p2p的网络中,所有网络节点都是同等地
2014-10-14 21:28:09 750
转载 QTableView中嵌入CheckBox的四种方法
搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用。 第二种比较简单,通常用这种方法。 第三种只适合静态显示静态数据用 第四种比较适合扩展,它除了可以嵌入复选框,还可以通过paint()绘制其它控件,图片等自定义风格。第一种方法是:编辑委
2014-09-22 15:49:29 2981 1
转载 QSS语法
借用css 的灵感, Qt也支持Qt自己的css, 简称qss。同css 相似,qss的主要功能与最终目的都是能使界面的表现与界面的元素分离,即质与形的分离,就如同一个人可以在不同的时候穿上不同的衣服一样,css机制的引入,使得设计一种皮肤与界面控件分离的软件成为可能,应用程序也能像web界面那样随意地改变外观。一、QSS语法同css一样,他也有由一个selector与一个decl
2014-09-19 11:38:33 939 1
转载 Qt编码问题
QT使用Unicode来存储,绘制以及操作字符串。在很多情况下,可能想要使用不同的编码方式来处理数据。例如大部分的日语文件都被存储在 Shift-JIS或者 ISO2022的文件中,而俄罗斯的用户常常使用KOI8-R或者CP1251编码方式。QT提供了一个QTextCodec类集合来从Unicode格式转化到相应的格式。 通过QTextCodec可以对程序预设编码方式,有以下三种:
2014-06-24 16:01:19 989
转载 QWaitCondition
/* 使用QWaitCondition和QMutex可以实现比信号量更精确的控制 */ #include #include //const int DataSize = 100000; //const int BufferSize = 4096; const int DataSize = 100; const int
2014-06-23 14:30:31 786
转载 Qt信号量
■:QSemphore Qt中的信号量是由QSemaphore类提供的,信号量可以理解为互斥量功能的扩展,互斥量只能锁定一次而信号量可以获取多次,它可以用来保护一定数量的同种资源。 acquire(n)函数用于获取n个资源,当没有足够的资源时调用者将被阻塞直到有足够的可用资源。release(n)函数用于释放n个资源。 QSemaphore类还提供了一个tryAcqu
2014-06-23 11:36:26 3534
转载 Qt的线程关联性
全文转载自dbzhang800的Bolg,「QObject 之 Thread Affinity」 原文地址:http://blog.csdn.net/dbzhang800/article/details/6557272 原文发布时间:2011-06-20 22:09 注意
2014-06-20 16:44:57 822
转载 Qt线程与事件循环
周末天冷,索性把电脑抱到床上上网,这几天看了 dbzhang800 博客关于 Qt 事件循环的几篇 Blog,发现自己对 Qt 的事件循环有不少误解。从来只看到现象,这次借 dbzhang800 的博客,就代码论事,因此了解到一些 Qt 深层的实现,虽然是在 Qt 庞大的构架里只算的是冰山的一角,确让人颇为收益。 从 dbzhang800 的博客中转载两篇关于事件循环的文章,放在
2014-06-20 16:35:54 826
转载 Qt模态对话框与事件循环
起源qtcn中文论坛中有网友问到:假设程序正常运行时,只有一个简单的窗体A,此时只有一个GUI主线程,在这个主线程中有一个事件循环处理窗体上的事件。当此程序运行到某阶段时,弹出一个模态窗体B(书上说模态窗体是有其自己的事件循环的),此时模态窗体B是否会有一个对应的子线程处理其事件循环?这儿其实有两个问题:模态对话框 和 事件循环 没有必然联系事件循环 和 子线程 没有必然联系
2014-06-20 15:49:51 1309
转载 QProcess的使用
本文通过QProcess,实现了在Qt中调用外部程序(控制台程序),并将输出重定向到了一个QTextEdit里。效果如下图所示: 运行界面如下: 程序共包含以下三个文件: [cpp] view plaincopy//: main.cpp #include "process.h" #include #include int main
2014-06-18 15:33:52 622
转载 QString与中文问题
转载地址:http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html(更新:本文的姊妹篇 Qt中translate、tr关系 与中文问题 )首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。很简
2014-06-18 09:27:45 912
转载 OpenGL像素操作
今天我们先简单介绍Windows中常用的BMP文件格式,然后讲OpenGL的像素操作。虽然看起来内容可能有点多,但实际只有少量几个知识点,如果读者对诸如“显示BMP图象”等内容比较感兴趣的话,可能不知不觉就看完了。像素操作可以很复杂,这里仅涉及了简单的部分,让大家对OpenGL像素操作有初步的印象。学过多媒体技术的朋友可能知道,计算机保存图象的方法通常有两种:一是“矢量图”,一是“像素图”
2014-06-06 14:58:18 913
转载 OpenGL绘制文本
OPENGL没有提供直接绘制文字的功能,需要借助于操作系统。 用OPENGL绘制文字比较常见的方法是利用显示列表。创建一系列显示列表,每个字符对应一个列表编号。例如,'A'对应列表编号1000+'A',‘B’对应列表编号1000+'B',以此类推。绘制一个字符串时,依次调用字符串中每个字符所对应的列表编号。 在Windows操作系统上,可以使用wglUseFontBitmaps函数来批
2014-06-02 15:00:17 3500
转载 QSettings读写ini文件和注册表
qt4.0一个非常有用的类QSettingsQSettings是qt4.0提供的一个读取配置文件的类,在windows平台,它提供了ini文件读些,注册表读写的功能。而且使用也非常简单。大家可以参照它的示例:$QTDIR/examples/tools/settingseditor我就简单点随便介绍介绍它的使用吧QSettings::Format有两种:QSettings
2014-05-30 14:26:06 1116
转载 C中使用extern修饰函数
用extern修饰函数是表示被修饰的函数定义在当前文件外,而该函数用extern声明类型后就可以被当前文件调用了。使用extern修饰某函数时,对该函数的调用是在连接阶段才被处理的。下面我们看一段代码。/*********************************************** * fun.c ************************************
2014-05-30 10:28:30 1902
转载 extern “C"的作用
比如说你用C开发了一个DLL库,为了能够让C++语言也能够调用你的DLL输出(Export)的函数,你需要用extern"C"来强制编译器不要修改你的函数名。通常,在C语言的头文件中经常可以看到类似下面这种形式的代码:C代码 #ifdef __cplusplus extern "C" { #endif /**** some declaration or so
2014-05-30 10:13:34 738
转载 位图字体
图像字体A:这一课我们将创建一些基于2D图像的字体,它们可以缩放,但不能旋转,并且总是面向前方,但作为基本的显示来说,我想已经够了。使用位图字体比起使用图形字体(贴图)看起来不止强100倍。你可以随时改变显示在屏幕上的文字,而且用不着为它们逐个制作贴图。只需要将文字定位,再使用我最新的gl命令就可以在屏幕上显示文字了。我尽可能试着将命令做的简单。你只需要敲入glPrint("Hello
2014-05-30 09:45:01 2168
转载 显示列表
显示列表的作用:显示列表的使用:今天介绍关于OpenGL显示列表的知识。本课内容并不多,但需要一些理解能力。在学习时,可以将显示列表与C语言的“函数”进行类比,加深体会。我们已经知道,使用OpenGL其实只要调用一系列的OpenGL函数就可以了。然而,这种方式在一些时候可能导致问题。比如某个画面中,使用了数千个多边形来表现一个比较真实的人物,OpenGL为了产生这数千个多边
2014-05-29 13:53:08 1003
转载 由glBitmap想到OpenGL编程涉及的坐标系
正文记得前一阵子分析OpenGL中绘图的代码看到了一些坐标的问题,向来图形编程的必然会多次碰到不仅是在OpenGl,于是仔细分析了,下述若有不对之处,恳请指正,谢谢。在OpenGL中呢有这么个函数glBitmap(),看名字就知道是绘图相关的下面根据api文档说明翻译了下他的参数含义。/**************************************************
2014-05-28 17:47:50 865
转载 位图与文字
转自:http://www.cnblogs.com/Clingingboy/archive/2010/10/28/1863554.html位图由一个个像素组成,画位图,就是画一个个像素点.如下图像素点越多,那么图片的清晰度就更高。当然由于让一个人用一个个像素画图片,那真是痛苦...so,只是了解下函数而已.OpenGL中画位图的三个步骤一.定位(glRast
2014-05-28 10:16:50 725
转载 GL_MODELVIEW矩阵详解
在opengl中,视图和模型变换是在一个矩阵中进行控制的,这个矩阵就是GL_MODELVIEW_MATRIX,可以使用glGetFloatv函数来获取这个矩阵,而我们所要使用glTranslate*, glRotate*,glScale* 等操作均最后反映到这个矩阵的变化中,所以了解这个矩阵的构造对于灵活运用OpenGL比较重要。变换矩阵在内存中的存放方式如下: m[0] m[4]
2014-05-27 11:41:38 4226
转载 深入理解OpenGL拾取模式
本文转自:http://blog.csdn.net/zhangci226/article/details/4749526 在用OpenGL进行图形编程的时候,通常要用鼠标进行交互操作,比如用鼠标点选择画面中的物体,我们称之为拾取(Picking),在网上看了很多OpenGL拾取的文章,但大多是只是介绍在OpenGL中如何拾取,如何利用OpenGL提供的一系列函数来完成拾取,最多再简单介绍下
2014-05-27 11:40:46 923
转载 光栅化
把景物模型的数学描述(显示列表)及其色彩信息转换至计算机显示器上的像素此过程亦称为光栅化.并可应用双缓存技术生成动画。把景物模型数学描述集色彩信息转换至计算机屏幕上的像素,这个过程称为光栅化.在执行这些步骤过程中,OpenGL可能会执行其他一些操作如消隐处理等。在数学上,点是理想的、没有大小的;而在光栅显示设备上,像素具有可测量的大小。把一个矢量图形(如直线,圆)转换为一系列像素点的过程就
2014-05-27 09:19:58 1470
转载 虚函数在子类和父类中的内存布局
C++类对象内存结构 转自:http://blog.csdn.net/jimmy54/article/details/5418766 首先介绍一下C++中有继承关系的类对象内存的布局: 在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。 对于子类,最开始的内存数据记录着父类对象的拷贝(
2014-02-25 16:44:21 3337 1
转载 第十三章,CArchive
MFC 提供CArchive类实现数据的缓冲区读写,同时定义了类对象的存储与读取方案。 以下对CArchvie 的内部实现作分析。 1.概述2.内部数据3.基本数据读写4.缓冲区的更新5.指定长度数据段落的读写6.字符串的读写7.CObject派生对象的读写1.概述 CArchive使用了缓冲区,即一段内存空间作为临时数据存
2014-01-20 15:02:40 819
转载 SetTimer的使用
etTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器。计时器属于系统资源,使用完应及时销毁。 SetTimer的函数原型如下:UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc ) ; 其中 hWnd是和timer关联的窗口句柄
2013-12-25 13:41:39 2159
原创 坐标空间
坐标系:Win32应用程序设计接口(API)使用四种坐标系空间:世界坐标系空间,页面空间,设备空间和物理设备空间。前两种是逻辑空间。物理设备空间即为我们经常使用的坐标系,使用GetWindowDC获取整个窗口,包括框架,标题栏,菜单栏等;使用GetClientDC获取窗口的客户区。转换:如果要在物理设备上绘制输出,Windows把一个矩形区域从一个坐标系空间拷贝到另一个坐标空间
2013-12-23 21:09:38 1148
转载 DUILIB使用OXC插件问题!
作为一个方便大众的ActiveX控件,在C++中竟然只能在MFC被傻瓜式地操控是不对滴,而当这种专利居然在不引入afxwin.h和afxdisp.h的情况下都还要有所体现的时候,朕就hold不住了,誓要能死你个落伍的小玩意儿!经过这两天的搏斗,朕在没有整过activeX这小b玩意儿的情况下还是收获了一些技巧,特此记录下来以便日后查看,也为苦于在C++中手动添加ActiveX时想摆脱mf
2013-12-19 10:04:34 2683
空空如也
glTexImage2D接口耗时问题
2023-12-25
片段写入多个附件问题
2022-08-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人