DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  C++/C

上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 47 下一页

摘要:转载:http://blog.csdn.net/historyasamirror/article/details/5778378当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《IO - 同步,异步,阻塞,非阻塞》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。直到有位博友问了一个问题,我重新查阅了一些更权威的资料,才发现原来的文章中有很大的理论 阅读全文
posted @ 2013-11-27 21:00 DoubleLi 阅读(438) 评论(0) 推荐(0) 编辑

摘要:Windows SDK笔记(一):Windows程序基本结构一、概述Windows程序具有相对固定的结构,对编写者而言,不需要书写整个过程,大部分过程由系统完成。程序中只要按一定的格式填写系统留给客户的那一小部分。所需要完成的有:窗口类的定义、窗口的建立、消息函数的书写、消息循环。二、消息处理函数Windows程序是事件驱动的,对于一个窗口,它的大部分例行维护是由系统维护的。没个窗口都有一个消息处理函数。在消息处理函数中,对传入的消息进行处理。系统内还有它自己的缺省消息处理函数。客户写一个消息处理函数,在窗口建立前,将消息处理函数与窗口关联。这样,每当有消息产生时,就会去调用这个消息处理函数。 阅读全文
posted @ 2013-11-27 20:58 DoubleLi 阅读(1154) 评论(0) 推荐(0) 编辑

摘要:1、字符编码、内码,顺带介绍汉字编码字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB 阅读全文
posted @ 2013-11-27 20:48 DoubleLi 阅读(4368) 评论(0) 推荐(1) 编辑

摘要:fstream,istream,ofstream 三个类之间的继承关系fstream :(fstream继承自istream和ofstream)1.typedefbasic_fstream >fstream;// 可以看出fstream就是basic_fstream2.template classbasic_fstream: publicbasic_iostream3.templateclassbasic_iostream: publicbasic_istream,publicbasic_ostreamistream:1.typedefbasic_ifstream >ifstrea 阅读全文
posted @ 2013-11-27 20:47 DoubleLi 阅读(12143) 评论(1) 推荐(0) 编辑

摘要:首先感谢大家对第一帖的支持,应一些网友烈要求下面我在关于上一贴的一些补充和说明(老鸟可以无视)这一贴是实战+理论不知道第一帖的先看第一帖:http://topic.csdn.net/u/20110710/19/5209f358-31c8-4057-b108-02155a417fd0.html1).补充个高级可重载函数PreSubclassWindow(),我的理解是允许用户在子类化之前再做一额外些处理 ,这个重载函数也是非常重要的,要引起相当的注意。可以在这里改变控件的大小,位置,窗口样式,字体 ,等等.....你能想到的能改的,都可以在这里改.2).关于Edit的补充说明:我最初的自绘方法是 阅读全文
posted @ 2013-11-27 20:42 DoubleLi 阅读(657) 评论(0) 推荐(0) 编辑

摘要:前言:从这学期开始就一直在学习自绘控件(mfc),目标是做出一款播放器界面,主要是为了打好基础,因为我基础实在是很烂....说说我自己心得体会以及自绘控件的方法吧,算是吐槽吧,说的不对和不全的地方,或者有更好的方法,请不吝赐教。我的机器环境是:Windows7旗舰版 Service Pack 1,Visual studio 20051).重绘某个控件时,强烈推荐使用子类化方法,比如想自绘Button控件, 首先添加自己的类CMYButton 继承自 CButton ,声明一个CMYButton 对象,然后使用 SubclassDlgItem(UINT nID, CWnd* pParent ); 阅读全文
posted @ 2013-11-27 20:35 DoubleLi 阅读(735) 评论(0) 推荐(0) 编辑

摘要:游戏制作已经开始采用C++了,却鲜有人选择使用MFC。但笔者觉得的 ASSERT(),VERIFY()和 TRACE()这几个宏很好用。所以就想自己写一个版本来适应Windows平台下不同的工程类型。提醒:ASSERT()被测试它的参数,若参数为0,则中断执行并打印一段说明消息。在 Release 版本的程序中它不起任何作用。VERIFY()和 ASSERT()很相似,区别在于在 Release 版本中它仍然有效(译者注:原作者在这里没有讲清楚,VERIFY()不会打印说明,只是会对参数表达式求值)。ASSERT()使用的时候必须保证参数表达式中不能有函数调用(译者注:ASSERT()宏在 R 阅读全文
posted @ 2013-11-27 20:19 DoubleLi 阅读(500) 评论(0) 推荐(0) 编辑

摘要:记得原来尝试学MFC的时候觉得有一个TRACE可以在Debug时向VS的调试输出窗口输出字串符,用来调试时跟踪变量很方便。然则如果不是MFC项目或者ATL的项目的话是不能使用这个宏的。这时有一个没有什么额外消耗的办法能够做到向调试输出窗口输出。在项目中额外包含windows.h这个头文件,再使用OutputDebugString()这个函数就能够起到与TRACE()宏相同的效果。在进行一点包装就能和c中的printf一样接受不定项参数。下面程序做为范例。#include #include using namespace std;bool _trace(TCHAR *format, ...){T 阅读全文
posted @ 2013-11-27 20:18 DoubleLi 阅读(3727) 评论(0) 推荐(0) 编辑

摘要:BOOL bResult = FALSE; // 初始化WinInet 环境 HINTERNET hInternet = InternetOpen("CEHTTP", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL); if(hInternet == NULL) return ; // 打开http session HINTERNET hSession = InternetConnect(hInternet, "www.hao123.com", 80, NULL, NULL, INTERNET_SERVICE_HT 阅读全文
posted @ 2013-11-27 15:19 DoubleLi 阅读(1434) 评论(0) 推荐(0) 编辑

摘要:HDC在MSDN中的全称为:The handle of device context。通常,我们都是用来做相应的显示操作。 熟悉WIN32的朋友对于其应该不会陌生,经常采用GetDC,GetWindowDC等等来获取其句柄。而用得最多的,可能就是BeginPaint,如:view plaincopy to clipboardprint?caseWM_PAINT:HDChdc=BeginPaint(hWnd,&ps);...EndPaint(hdc,&ps);break;[cpp]view plaincopy caseWM_PAINT:HDChdc=BeginPaint(hWnd 阅读全文
posted @ 2013-11-27 15:11 DoubleLi 阅读(1427) 评论(0) 推荐(0) 编辑

摘要:个人总结:最近看网络编程是碰到了TRACE语句,不知道在哪里输出,查了一晚上资料也没找出来,今天终于在CSDN上找到了,真是个高地方啊,方法如下:1.在MFC中加入TRACE语句2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK3.进行调试运行,GO(F5)(特别注意:不是执行‘!’以前之所以不能看到TRACE内容,是因为不是调试执行,而是‘!’了,切记,切记)4.然后就会在OUTPUT中的DEBUG窗口中看到TRACE内容了,调试执行会自动从BUILD窗口跳到DEBUG窗口,在那里就看到TRACE的内容了,^_^以下是找的TRACE的详细介绍:== 阅读全文
posted @ 2013-11-27 14:56 DoubleLi 阅读(1313) 评论(0) 推荐(0) 编辑

摘要:一 局部变量: 在函数体内声明的变量, 称为 局部变量.二 自动局部变量与静态局部变量 局部变量在声明时, 在类型前可以加 auto 或 static 修饰. auto int a ; 表示 a 是自动局部变量, auto 关键字可以省略, 它与 int a ; 等价. static int b ; 表示 b 是 静态局部变量.三 自动局部变量 与 静态局部变量 的区别 1 自动局部变量 在退出函数时, 该变量及其值将"自动" 消失. 当再次执行这个变量所在的函数时, 系统"自动" 重新建立该变量, 与上一次运行时的结果毫不相干. 自动局部变量在函数内定 阅读全文
posted @ 2013-11-25 20:56 DoubleLi 阅读(1264) 评论(0) 推荐(0) 编辑

摘要:#include #include LRESULT CALLBACK WinSunProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter);int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handl 阅读全文
posted @ 2013-11-25 09:22 DoubleLi 阅读(593) 评论(0) 推荐(0) 编辑

摘要:windows窗口的创建有以下几个步骤:1、创建注册窗口类2、创建窗口句柄3、显示更新窗口4、消息循环1、创建注册窗口类所谓创建窗口类就是定义一个WNDCLASS类对象,并将该对象进行初始化。之后就要用RegisterClass()函数对该窗口类对象进行注册,以便使某个窗口与该窗口类相关联。关于WNDCLASS的定义如下:typedef struct { UINTstyle; WNDPROClpfnWndProc; intcbClsExtra; intcbWndExtra; HINSTANCEhInstance; HICONhIcon; HCURSORhCursor; HBRUSHhbrBac 阅读全文
posted @ 2013-11-25 09:21 DoubleLi 阅读(5139) 评论(0) 推荐(0) 编辑

摘要:提示1:对“内存结构”表示有疑问或不解的,先参考:http://blog.csdn.net/guogangj/archive/2007/05/25/1625199.aspx,本文使用的表示方法和VC6的Memory视图一致,即:左上表示低位。提示2:下文提到的“类大小”严格上来说是该类经过实例化的对象的大小。当然了,光研究长度的话,两者差别不大,因为:CClassA objA,sizeof(CClassA)和sizeof(objA)得到的结果都是一样的。一、真空类class CNull{};长度:1内存结构:??评注:长度其实为0,这个字节作为内容没有意义,可能每次都不一样。二、空类class 阅读全文
posted @ 2013-11-23 16:27 DoubleLi 阅读(405) 评论(0) 推荐(0) 编辑

摘要:这篇文章始于对这么个程序的思考:intmain(intargc,char*argv[]){inti=1234567;DWORDdwWrite;HANDLEhFile=CreateFile("test.txt",GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);WriteFile(hFile, &i,sizeof(int), &dwWrite,NULL);CloseHandle(hFile);return0;}用二进制编辑器(如UltraEdit)打开程序输 阅读全文
posted @ 2013-11-23 16:25 DoubleLi 阅读(978) 评论(0) 推荐(0) 编辑

摘要:1、GDI名字的意义GDI Graphic Device Interface,我说不清和GUI有什么区别。可能一种针对设备,一种针对用户而言吧,反正以后都说GDI,也就是Windows的图形编程。2、设备描述上下文HDCHandle Device Context这个是关键的关键,可以理解成画图的环境,何谓环境,画板,纸,笔,尺寸,字体,颜色,区域等。反正包括你能想到的和未能想到的了。要画出不同的图形,很大程度上是对HDC的修改。3、HDC的创建方式WM_PAINT消息来的时候,用:hdc = BeginPaint(hwnd, &ps);//......EndPaint(hwnd, &a 阅读全文
posted @ 2013-11-23 16:23 DoubleLi 阅读(673) 评论(0) 推荐(0) 编辑

摘要:代码下载:http://download.csdn.net/detail/qq316293804/6502879迅雷播放器教程汇总:仿迅雷播放器教程 -- 基于ffmpeg的C++播放器 (1)仿迅雷播放器教程 -- 媒体播放器对比 (2)仿迅雷播放器教程 -- 媒体播放三大底层架构简析 (3)仿迅雷播放器教程 -- 基于VLC的C++播放器 (4)仿迅雷播放器教程 -- 封装VLC (5)仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)仿迅雷播放器教程 -- 十年经验大牛对MFC的认识 (7)仿迅雷播放器教程 -- 权威界面库对比 (8)仿迅雷播放器教程 -- C++界面制作方法的对 阅读全文
posted @ 2013-11-22 15:35 DoubleLi 阅读(962) 评论(0) 推荐(1) 编辑

摘要:工作线程,在一些技术文章被称为辅助线程,是相对于主线程而言的。在工作线程中使用界面需要一些技巧。我就曾在工程线程中弹出对话框中遇到过莫名奇妙的错误。下面就我的经验谈谈如何从工作线程中弹出对话框(暂时只讲方法,原理还没彻底弄清楚)。实际上在工作线程中直接弹出模式对话框中在debug模式下有时出错(这里的有时的意思是必然会出错,但是不是每次都出错),弹出模式对话框的代码如下:DWORDWINAPIRecvThread(LPVOIDlpParam)//工作线程函数{CAIDlgProductNamedlg;if(dlg.DoModal()==IDOK){……}}错误截图:如果跟踪DoModal函数, 阅读全文
posted @ 2013-11-21 11:04 DoubleLi 阅读(1357) 评论(0) 推荐(0) 编辑

摘要:信息来源:csdn C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话。在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少量内存泄漏可能不会引起我们的注意,但泄漏大量内存的程序或泄漏日益增多的程序可能会表现出各种 各样的征兆:从性能不良(并且逐渐降低)到内存完全耗尽。更糟的是,泄漏的程序可能会用掉太多内存,导致另外一个程序垮掉,而使用户无从查找问题的真正根源。此外,即使 阅读全文
posted @ 2013-11-21 11:02 DoubleLi 阅读(445) 评论(0) 推荐(0) 编辑

上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 47 下一页