摘要:动态链接库中分配内存引起的本文主要是探讨关于在动态链接库分配的内存在主程序中释放所产生的问题,该问题是我在刚做的PJP工程中所遇到的,由于刚碰到之时感动比较诡异(这也是学识不够所致),所以将它写下来,大家一起分享.问题来由:由于该工程中要用到声音,所以我的分工之一就是用DirectMusic和Dir...
阅读全文
05 2014 档案
摘要:SDL 简介什么是SDL?即 Simple DirectMedia Layer,使用LGPL许可证。免费的跨平台多媒体应用编程接口用于游戏、游戏开发工具、模拟器、样本演示、多媒体应用等它能做什么?视频、音频、事件、CDROM支持、线程、计时器、各种图象文件格式读取、快速绘图、混音、游戏杆支持、网络、...
阅读全文
摘要:SDL即Simple DirectMedia Layer,类似DirectX,是完整的游戏、多媒体开发包,但不同的是它跨越几乎所有的平台,有各种语言的接口,多种语言的文档,而这一切都是广大志愿者完成的。目前扩展部分还没有正式的文档,以下为核心部分文档的向导部分。序言关于SDLSDL为方便制作能跨跃L...
阅读全文
摘要:TS 流解码过程:1. 获取TS中的PAT2. 获取TS中的PMT3. 根据PMT可以知道当前网络中传输的视频(音频)类型(H264),相应的PID,PCR的PID等信息。4. 设置demux 模块的视频Filter 为相应视频的PID和stream type等。5. 从视频Demux Filter...
阅读全文
摘要:1.TS包得数据结构2.// Transport packet headertypedef struct TS_packet_header{ unsigned sync_byte : 8; //同步字节,固定为0x47 ,表示后面的是一个TS分组,当然,后面包中的数据是...
阅读全文
摘要:前面介绍过的几种格式flv、mkv、asf等。他们音视频的数据包一般都是按照文件的顺序交叉安放。你解析完头部信息后。剩下的一般就按照文件顺序一个数据包一个数据包的解析就行了。但是MP4完全不是这种概念。他的媒体信息和数据是分开存放的。就是你想获得数据之前必须要解析出每个帧数据所有的位置。mp4存放这...
阅读全文
摘要:ES流(Elementary Stream):也叫基本码流,包含视频、音频或数据的连续码流. PES流(Packet Elementary Stream):也叫打包的基本码流, 是将基本的码流ES流根据需要分成长度不等的数据包, 并加上包头就形成了打包的基本码流PES流. TS流(Transport...
阅读全文
摘要:1.流媒体系统结构ES:elemental stream 基本数据流;PES:packet elemental stream分组的基本数据流;然后把PES打包成PS ,TS流,PS:program stream;TS:transport stream;DTS(解码时间戳)和PTS(显示时间戳)分别是...
阅读全文
摘要:大话设计模式上的一个图,我用EA画出来的:UML中的6大关系相关英文及音标:依赖关系dependency[di'pendənsi]关联关系association[ə,səuʃi'eiʃən]聚合关系aggregation[ˌægrɪˈgeɪʃən]组合关系composition[,kɔmpə'ziʃ...
阅读全文
摘要:上一篇文章我详细介绍了如何开发一款高性能的TCP服务器的网络传输层.本章我将谈谈如何开发一个高性能的UDP服务器的网络层.UDP服务器的网络层开 发相对与TCP服务器来说要容易和简单的多,UDP服务器的大致流程为创建一个socket然后将其绑定到完成端口上并投递一定数量的recv操作.当有 数据到来...
阅读全文
摘要:对于开发一款高性能服务器程序,广大服务器开发人员在一直为之奋斗和努力.其中一个影响服务器的重要瓶颈就是服务器的网络处理模块.如果一款服务器程序不能及时的处理用户的数据.则服务器的上层业务逻辑再高效也是徒劳.所以一个服务器程序的网络处理能力直接影响到整个服务器的性能, 本文主要介绍在windows平台...
阅读全文
摘要:在 MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送 流(TS:TransportStream)。据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(TS)和节目流 (PS:ProgramS...
阅读全文
摘要:PES是打包过的ES,已经插入PTS和DTS,一般是一个pes包为一帧图像PES包格式:PES再打包成TS流或PS流,往往一个PES会分存到多个ts包中,start_code: 0x00 00 01stream_id:pes包头长:信息区:包含附加信息以及PTS和DTSPS流:每一个pes head...
阅读全文
摘要:最近使用h264码流数据进行录像,但是录出来的第一帧有马赛克,究其原因是录像的第一帧不是关键帧,所以需要录像是需要判断第一帧是否是关键帧,方法有两种,第一种是原码流的基础上查找,第二种是将原码流传递给ffmpeg让ffmpeg判断key_frame,第二种相对简单,但是由于这样一来录像和解码视频切合...
阅读全文
摘要:来源:http://blog.csdn.net/lezhiyong 应用背景:线程1将每次数量不一的音频采样点(PCM音频数据)写入环形缓冲区,线程2每次取固定数量采样点送音频编码器,线程1线程2在平均时间内的读写数据量相等。(倒入桶中的水量有时大有时小,但每次取一瓢喝:) 该环形缓冲区借鉴Coo...
阅读全文
摘要:开门见山,直接就事论事。假如有这么一个基于IOCP模型的Server,这个Server提供的所有服务中有这么一种服务……文件下载,我们再假设Server端存有一个20G的文件,客户端这时发送一个请求到服务端来,客户端要求下载这个20G的文件,由此可能引发一系列让人头疼的问题(不谈TransmitFi...
阅读全文
摘要:利用百度文库漏洞下载)百度文库免积分下载原格式文档的办法其实很简单。1、首先在浏览器中找到想下载的文档,如http://wenku.baidu.com/view/bd23fe3e0b4c2e3f57276341.html。2、修改网页地址,只需要在网址中的 wenku 前加上 wap ,如http:...
阅读全文
摘要:对于刚刚接触 DirectShow 的人来说,安装配置是一个令人头疼的问题,经常出现的情况是最基本的 baseclass 就无法编译。一开始我也为此费了很大的功夫,比如说修改代码、修改编译选项使其编译通过。因为大家 Visual Studio 的版本与 DirectShow 的版本各不相同,导致问题...
阅读全文
摘要:Visual Studio的SDKVisual Studio 6.0自带的SDK是1998年的,目录为C:\Program Files\Microsoft Visual Studio\VC98\,这里简记为VS6SDKDIR。以下为打开vc6菜单tools->options->directories...
阅读全文
摘要:CMenu类从CObject类派生而来。为什么要使用CMenu类呢?AppWzard不是把菜单做好了吗?在资源编辑器上修改菜单不是很方便吗?我是个vc++初学者,自从当斑竹以来,天天看贴子,也学到了不少东西。感觉学vc++稍微深入一点好,至少要能搞清楚AppWizard在背后都干了些什么东西。事实上...
阅读全文
摘要:#define IDM_NEW 0x1002#define IDM_EXIT 0x1003#define IDM_HELP 0x1004#define IDM_ABOUT 0x1005hMenu = CreateMenu();hFileMenu = CreateMenu();hHelpMenu = ...
阅读全文
摘要:新建一个单文档程序在查看菜单项中增加两个子菜单,分别为隐藏工具栏(ID_HIDE),新建菜单(ID_NEWMENU)在Resource.h中增加一个ID_NEWMENU宏#define ID_NEWMENU WM_USER+101操作工具栏和状态栏使用GetDescendantWindow函数获取工...
阅读全文
摘要:创建一个基于对话框的工程,工程名为CreateMenu为该对话框增加一个文件菜单项和测试菜单项,如下图所示测试菜单项至少要有一个子菜单项在对话框属性中关联该菜单在resource.h中增加一个ID_TESTMENU宏#define ID_TESTMENU 5000在对话框中添加一个Button按钮,...
阅读全文
摘要:1.SetActiveView是MFC框架内的一个函数,而不是SDK中的函数,也就是说SDK中没有ActiveView这个概念,只有在MFC中才有2.SetFocus是SDK中的函数(当然MFC中也有这个,作用是一样的),拥有Focus的窗口能接受键盘的输入3.SetCapture设置当前线程的特定...
阅读全文
摘要:实际上,用鼠标点住对话框背景进行拖动操作并不难,但是你必须了解在标题栏里拖动窗口的原理。Windows首先确定鼠标点中了那个窗口,然后向那个窗口发送一个WM_NCHITTEST消息找出此窗口的哪个“非客户区”(如边界、最大化/最小化按钮、菜单、标题等等)拥有鼠标光标。接着默认的窗口过程响应消息并返回...
阅读全文
摘要:文章转自http://blog.csdn.net/zamaolangzi/article/details/5645284使用过QQ的人都知道,只要把文件拖拽到消息框中就可以传送文件了。那么这种功能是如何实现的呢?其实很简单,只需要响应WM_DROPFILES消息就可以了。在基于对话框的程序中,默认是...
阅读全文
摘要:我写了一个小类库,其中包含一个类,CDragDropMgr,用这个类可以在自己的应用程序窗口间添加拖拽行为。我还写了一个测试程序,DDTest,示范了如何使用 CDragDropMgr 类(参见 Figure 2)。Figure 3 是程序运行的画面。DDTest 有两个列表框和一个编辑框。你可以将...
阅读全文
摘要:控件”树”(tree)能够清晰地显示所包含数据的继承关系,是一个强有力的控件。但是真正掌握并能运用CTreeCtrl类的众多特性并不是一件容易的事情。在Visual C++ Developer杂志的9月份、10月份这两期中,Stephen介绍了两个类CBitmapTree和CCheckableTre...
阅读全文
摘要:图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表...
阅读全文
摘要:在MFC中CImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储。该控件是不可见的,通常与其它如CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl一起使用,为他们...
阅读全文
摘要:1. 音频简介经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);22050HZ 8bit mono: 每秒...
阅读全文
摘要:一般的windows复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。...
阅读全文
摘要:基本就是把一个句柄绑定和解绑定于一个类对象上,是其可以使用MFC的函数而不是API首先,你要明白Windows对象和MFC对象的区别。MFC对象实际上并没有把整个Windows对象都包装在其中,它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口对象,也就是WNDCLASS,是...
阅读全文
摘要:因为项目的关系,需要根据图像路径,创建CBitmap对象。起初查资料找到了LoadBitmap这个函数,根据CSDN得BOOL LoadBitmap ( LPCTSTRlpszResourceName);ParameterslpszResourceName:Points to a null-term...
阅读全文
摘要:说道定时器,很多人都会想到Windows定时器SetTimer吧!其实,项目里面原本确实是使用这种方法实现动画效果的,但是后来问题出现了!由于WM_TIMER消息优先级比较低,常常被丢失,导致一个WM_MOUSEMOVE消息都会影响整个动画的效果。 这时我就考虑,是否能给定时器创建一个单独的线程,接...
阅读全文
摘要:1、消息反射解释: 父窗口将子窗口发给它的通知消息,首先反射回子窗口进行处理(即给子窗口一个机会,让子窗口处理此消息),这样通知消息就有机会能被子窗口自身进行处理。2、MFC中引入消息反射的原因: 在Windows的消息处理中,子窗口的发给其父窗口的通知消息只能由其父窗口进行处理,这使得子窗口的...
阅读全文
摘要:MFC类的分类1Root: CObject :CObject2Application Architecture Classes:CWinApp/CFrameWnd/...3Window, Dialog, and Control Classes:CWnd/CDialog/...4Drawing and...
阅读全文
摘要:一、给控件添加排序功能report风格的list控件很多情况下都需要支持排序功能,而且最好支持按不同列进行排序。CListCtrl的类方法SortItems支持排序功能,但是在排序过程中,两个数据真正的比较过程是通过SortItems的第一个参数指向的回调比较函数来完成的。这个函数通过比较SetIt...
阅读全文
摘要:QueryPerformanceFrequency() - 基本介绍类型:Win32API原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);作用:返回硬件支持的高精度计数器的频率。返回值:非零,硬件支持高精度计数器;零,硬件不...
阅读全文
摘要:文章来源:[url]http://www.programfan.com/article/showarticle.asp?id=2951[/url]当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供...
阅读全文
摘要:C++著名类库1、C++各大有名库的介绍——C++标准库2、C++各大有名库的介绍——准标准库Boost3、C++各大有名库的介绍——GUI4、C++各大有名库的介绍——网络通信5、C++各大有名库的介绍——XML6、C++各大有名库的介绍——科学计算7、C++各大有名库的介绍——游戏开发8、C++...
阅读全文
摘要:CRectTracker(俗称“橡皮筋”类)是一个非常有意思的类。你在Windows中经常看到这样的情况:它可以用做显示边界,你也可以扽它的八个角用来放大缩小,或做框选使用。如何通过编程来实现这种功能呢?这就是CRectTracker类的作用;(框选) (显示边界并可以缩放)你打开上面的那个工程文...
阅读全文
摘要:BOOLEAN MmIsAddressValid( _In_PVOID VirtualAddress);ParametersVirtualAddress[in]A pointer to the nonpaged virtual address to check. The caller must e...
阅读全文
摘要:CImage imSrc,imDest;imSrc.Load(……);//读入原始图片imDest.Create(……)//创建新大小的图片imSrc.StretchBlt(imDest.GetDC(),……);imDest.ReleaseDC();imDest就是你制定尺寸的图片对象
阅读全文
摘要:1 CImage img , img1 ,imDest; 2 img1.Load( 图片路径); 3 img.Load( 图片路径); 4 为了防止图片失真,先处理一下在把图片显示出来 5 SetStretchBltMode(pDC->m_hDC , HALFTON...
阅读全文
摘要:如果本篇文章还不能解决你在生成解决方案以及便宜过程中的问题 请参阅:http://blog.csdn.net/afterwards_/article/details/7997385 我个人配置过来成功运行的经验.CxImage是一个十分强大的图形库,我们在PC端上开发GUI程序时,时常会用到位图之外...
阅读全文
摘要:MFC提供了位图处理的基础类CBitmap,可以完成位图(bmp图像)的创建、图像数据的获取等功能。虽然功能比较少,但是在对位图进行一些简单的处理时,CBitmap类还是可以胜任的。很多人可能会采用一些现成的CDib类进行位图的读取与处理,我觉得必要性不大。因为他们完成的功能差不多。 以下假设定义了...
阅读全文
摘要:句柄相当于一个指向指针的指针,指向指针的指针同样是指针,所以暂且认为它是一个指针,那么CreateFile相当于new 分配一个资源,让这个指针指到这块资源的首地址,那么当CloseHandle(handle)后等于是delete操作。此时handle的值还在,但是资源已被释放掉,那这个时候如果去访...
阅读全文
摘要:Visual C++ 的 C 运行时刻函数库标识模板0xCD 已经分配的数据(alloCated Data)0xDD 已经释放的数据(Deleted Data)0xFD 被保护的数据(Fence Data)Visual C++ 的 C 运行时刻函数库内存块类型标识符_NORMAL_BLOCK 由程序...
阅读全文
摘要:1. 存分配的三个方法:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中...
阅读全文
摘要:从微软站点:检查指针有效性下面的示例使用 _CrtIsValidPointer 验证给定的内存范围对于读或写是否有效。_ASSERTE(_CrtIsValidPointer( address, size, TRUE );下面的示例使用 _CrtIsValidHeapPointer 验证指针指向本地堆...
阅读全文
摘要:最近在写网络上的东西,程序经过长时间的运行,会出现崩溃的问题,经过DUMP文件的查看,发现在recv的地方接收返回值的时候,数据的长度异常的大差不多16亿多字节.而查看分配后的char指针显示为错误的指针,这可能是接收数据不对应产生的问题解决思路如下: 1.对返回值长度进行判断,如果超过项目内最大...
阅读全文
摘要:ZThread库是一个开源的跨平台高级面向对象的线性和sycnchronization 库,以运行POSIX 和Win32 系统中的C++程序。ZThread库的主页:http://zthread.sourceforge.net最新版本Zthread远吗下载地址:http://prdownloads...
阅读全文
摘要:1>下载CURL源代码curl-7.26.0.zip2>用VC2008/2005打开工程curl-7.26.0\lib\libcurl.vcproj,转换下工程并构建,可以直接编译成功!3>新建个控制台工程测试下刚才编译的静态库libcurl.lib,可以在libcurl\curl-7.26.0\d...
阅读全文
摘要:目录索引:一、LibCurl基本编程框架二、一些基本的函数三、curl_easy_setopt函数部分选项介绍四、curl_easy_perform 函数说明(error 状态码)五、libcurl使用的HTTP消息头六、获取http应答头信息七、多线程问题八、什么时候libcurl无法正常工作九、...
阅读全文
摘要:用vc 菜单 文件| 打开|指定EXE或DLL,如有指定运行时库,则PE文件的资源中可以看到manifest 配置节然后据此判断EXE依赖的运行时库, 再根据编译选项调整 运行时库设置
阅读全文
摘要:简单来说:1>在远程机器跑VC自带的远程调试工具msvsmon.exe,并把要调试的程序跑起来2>用VC调试器附加进程,即可调试先展开来说:VC8,VC9都自带远程调试工具,可以在开始菜单中找到,以VC2008为例在由 开始菜单=>Microsoft Visual Studio 2008=>Visu...
阅读全文
摘要:遇到一未找到必然出现条件的崩溃,不知道什么时候能触发崩溃,崩溃dump显示,试图访问了非法的内存或者写入了非法的内存此时如下两个函数就比较有用了:[cpp]view plaincopyBOOLWINAPIIsBadReadPtr(__inconstVOID*lp,__inUINT_PTRucb);B...
阅读全文
摘要:判断调用进程是否拥有对指定字符串指针的读取权限,函数原型如下:BOOL IsBadStringPtr( LPCTSTR lpsz, UINT_PTR ucchMax);参数:lpsz: 输入参数,指向字符串。ucchMax:输入参数,读取字符串的最大长度。返回值:返回BOOL值,表示当前进程是否拥有...
阅读全文
摘要:1、有关IPicture加载图片后直接Render到内存DC的问题(HBITMAP转换IPicture)Picture的方法get_Handle可以直接得到图片的句柄IPicture *pIPicture;HBITMAP hBitmap;...pIPicture->get_Handle((OLE_H...
阅读全文
摘要:使用windows的的自带的函数来显示图像可能始终还是绕不开两个概念,视口和窗口。视口---屏幕上的一个显示用的矩形框。窗口--- 完整图像上的一个用于取数的矩形框。屏幕的宽度、高度和视口参数用于控制向显示存储器中写数。图像的宽度、高度和窗口参数用于控制从图像文件中取数。利用DrawDibDraw函...
阅读全文
摘要:感谢博主http://book.51cto.com/art/200711/59731.htm《Windows用户态程序高效排错》第二章主要介绍用户态调试相关的知识和工具。本文主要讲了排错的工具:调试器Windbg。第二章 汇编、异常、内存、同步和调试器——重要的知识点和神兵利器这一部分主要介绍用户态...
阅读全文
摘要:感谢博主http://book.51cto.com/art/200711/59874.htm2.2 读懂机器的语言:汇编,CPU执行指令的最小单元2.2.1 需要用汇编来排错的常见情况汇编是CPU执行指令的最小单元。下面一些情况下,汇编级别的分析通常是必要的:1. 阅读代码看不出问题,但是跑出来的结...
阅读全文
摘要:习惯了Vsiual Studio的兄弟们可能会因为先入为主的原因以为所有的调试器都应该像它那样,其实不然,当你安装Debugging Tools for Windows的时候,你将发现有两个系列的工具,一系列32位的工具和一系列64位的工具。这让人觉得和费解,因为在我们安装Microsoft Vis...
阅读全文
摘要:win32堆及内部结构Windows在创建一个新的进程时会为该进程创建第一个堆,被称为进程的默认堆。默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中。要获得_PEB的地址,可以通过$peb伪寄存器来获得,dt _PEB @$peb。也可以通过.process获得。如上图Proc...
阅读全文
摘要:Win32堆的调试支持为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试。1:堆尾检查(Heap Tail Check)HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出。2:释放检查(Heap Free Check)在释放堆块时进行检查,防止释放同一个堆块。3:参数检查,对...
阅读全文
摘要:必先利其器之一:使用PageHeap.EXE或GFlags.EXE检查内存越界错误Article last modified on 2002-6-3----------------------------------------------------------------The informat...
阅读全文
摘要:《Windows用户态程序高效排错》第二章主要介绍用户态调试相关的知识和工具。本文主要讲了PageHeap,调试Heap问题的工具.AD:51CTO学院:IT精品课程在线看!2.4.2 PageHeap,调试Heap问题的工具幸运的是,Heap Manager的确提供了主动检查错误的功能。只需要在注...
阅读全文
摘要:DirectShow提供了用应用程序从适当的硬件中捕捉和预览音/视频的能力。数据源包括:VCR,camera,TVtuner,microphone,或其他的数据源。一个应用程序可以立刻显示捕捉的数据(预览),或是保存到一个文件中。在这个例子中,ICaptureGraphBuilder接口是处理捕捉工...
阅读全文
摘要:流媒体的处理,以其复杂性和技术性,一向广受工业界的关注。特别伴随着因特网的普及,流媒体在网络上的广泛应用,怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题。选择一种合适的应用方案,事半功倍。此时,微软的DirectShow,给了我们一个不错的选择。 DirectShow是微软公司提供的一套在...
阅读全文
摘要:一、前言在前一段时间,我遭遇了一个现象诡异的Bug,最后原因归结为在DllMain里错误地调用了FreeLibrary(在本文最后对此Bug有详细的解释)。 MSDN里关于禁止在DllMain里调用LoadLibrary和FreeLibrary的解释过于含糊不清,所以我重温了一遍RussOsterl...
阅读全文
摘要:有没有碰到过程序启动就因为异常直接crash?有没有碰到程序启动之后什么反应也没有?有没有碰到过程序启动之后去触发另一个进程失败?有没有碰到别人的程序调用了你的代码,出现问题以后,让你来调查,而你只有你的源代码,该怎么办? 碰过这样的问题,应该都会很头疼吧,如何诊断问题呢?最简单的当然是Debug...
阅读全文
摘要:接收邮件的,暂时没搞定,不过在SF上找到了这个发送邮件的库文件.它提供了一个比较完整的类,可以简单的调用发送邮件.下面是作者提供的一个例子,不过由于连SMTP发邮件需要密码,所以代码我改了一下.// This file is part of the jwSMTP library.//// jwSMT...
阅读全文
摘要:Microsoft的针对与设备无关位图(DIB位图),在其WIN32 SDK的Multimedia中提供了一组绘制DIB位图的高性能函数组──DrawDib函数组。DrawDib函数组是一组不依赖于图形设备接口(GDI)函数,而直接操作显存的函数组。它们支持8位、16位、24位和32位图象深度的DI...
阅读全文
摘要:实现程序全屏幕显示的思路有很多种,最常见的一种就是: 1)利用Windows API提供的一个结构体WINDOWPLACEMENT来存储全屏显示前视图和主框架窗口在屏幕上的位置和显示信息、非客户区窗口的显隐信息,以便全屏幕显示时恢复窗口原状; 2)通过API函数GetDesktopWindow(...
阅读全文
摘要:本文介绍如何在VC资源文件中加入自己的声音资源,使自己的应用程序可以播放声音。 1、首先用文本编辑器(如记事本)打开资源文件(.rc文件) 在最后加入自己的声音资源,如下IDW WAVE "c:\\kav\\sound\\virus.wav" 保存资源文件。 2、在应用程序中要播放声音的地方...
阅读全文
摘要:我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本文介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出来。本文所使用的原始位图及程序编译运行后的界面效果如下图所示:图一、原始位图图二、对话框界面上透...
阅读全文
摘要:摘 要:本文提供了四种启动画面制作方法。使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序);二是 可以用来显示软件名称和版权等提示信息。怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法。前三种适用于基于文档的应用程序,第四种适用于基于对话框的应用程 序。1.利用组件库...
阅读全文
摘要:菜单控制为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态需要将CFrameWnd:: m_bAutomenuEnable设置为FALSE,如果该数据成员为TRUE(缺省值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项。//D...
阅读全文
摘要:作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃!“该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见到的东西了。有的时候,自己的程序在自己的机器上运...
阅读全文
摘要:1.修改主窗口风格AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名、窗口是叠加型的、可改变窗口大小等。要修改窗口的缺省风格,需要重载CWnd::PreCreateWindow(CREATESTRUCT& cs)函数,并在其中修改CREATESTRUCT...
阅读全文
摘要:1.图标透明(1).Windows中的图标其实是有两个图像组成的,其中一个用于与它要显示的位置的图像做“AND”操作,另一个作“XOR”操作。透明:用“白色”AND,用“黑色”XOR反色:用“白色”AND,用“白色”XOR正常色:用“黑色”AND,用正常颜色XOR.(2). WIN9X中好像是对像素...
阅读全文
摘要:1.如何得到视图指针[问题提出]现在你有一个多线程的Demo,你想在多线程里处理视图指针里的函数,我们给这个函数起个名字:Put();该如何实现呢?//有两种方法可以实现你的要求://1)第一种方法://要是多线程不是在App.cpp里出现,那么要在多线程的.cpp中加上extern CYourAp...
阅读全文
摘要:1.修改打印预览的ToolBar为AFX_IDD_PREVIEW_TOOLBAR这个ID创建一个DialogBar。则系统就会用新创建的DialogBar代替系统默认的那个2.关于打印1.要打印哪个视就((CMainFrame*)AfxGetMainWnd())->m_wndSplitter.Set...
阅读全文
摘要:1.删除文件夹//删除文件夹及其所有内容void CBaseDoc::RemoveFolder(const CString &strPathName){CString path = strPathName;if (path.Right(1) != _T("\\"))path += _T("\\");...
阅读全文
摘要:1.用鼠标移动基于对话框的无标题栏程序的简单方法void CVCTestDlg::OnLButtonDown(UINT nFlags, CPoint point){//一句话解决问题SendMessage(WM_SYSCOMMAND,0xF012,0);CDialog::OnLButtonDown(...
阅读全文
摘要:1.用鼠标移动基于对话框的无标题栏程序的简单方法void CVCTestDlg::OnLButtonDown(UINT nFlags, CPoint point){//一句话解决问题SendMessage(WM_SYSCOMMAND,0xF012,0);CDialog::OnLButtonDown(...
阅读全文
摘要:1.如何在TreeList中加图标?[问题提出]请问treeview控件和treectrl控件的用法有何不同呢?向如何imagelist控件中加图象呀?[解决方法]1)HICON hicon[8];m_imageList.Create(16,16,0,8,8);hicon[0]=AfxGetApp(...
阅读全文
摘要:1.设置滚动条的滚动大小创建一个基于CScrollview的SDI Project(在第6步中选CScrollview)若你已创建了,这步可以省略。然后:改为如void CTestView::OnInitialUpdate(){CScrollView::OnInitialUpdate();CSize...
阅读全文
摘要:1.资源种创建的控件,对其属性的动态控制:在对话框类的头文件里创建所要改变属性的控件的对象,如要改变一个Button(其ID为IDC_MyButton)的属性,则需创建Cbutton的对象m_button。然后在.cpp中的DoDataExchange函数里将Button的ID和创建的对象绑定在一起...
阅读全文
摘要:1.如何让对话框中的编辑框接收对话框的消息//////////////////////////////////////////////////如何让对话框中的CEdit控件类接收对话框的消息////////////////////////////////////////////////1、在对话框中...
阅读全文
摘要:1.如何正确的得到ComBox的指针CComboBox *mComb = (CComboBox*)GetDlgItem(IDC_DuanCB);CComboBox *mComb = (CComboBox*)::GetDlgItem(m_hWnd,IDC_DuanCB);2.CComboBox控件详解...
阅读全文
摘要:1.列表框中标题栏(Column)的添加创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report、Align项里选择Top、Sort项里选择None.然后在该List所在对话框的类(头文件)里创建ClistCtrl的一个对象m_list然后在...
阅读全文
摘要:1.工具条和状态条中控件的添加:方法⑴.只能在ToolBar里创建控件:首先,在ToolBar中创建一个Button,其ID为ID_TOOL_COMBO(我们要将创建的控件放在该Button的位置上).其次,新创建一个类CMainToolBar,要从CToolBar继承(创建过程大概如下:选择工程/...
阅读全文
摘要:1.窗口最大最小化按纽的控制①怎样在程序开始的时候让它最大化?②vc++做出来的exe文件在窗体的右上方是没有最大化和最小化按钮的,怎样实现这一功能?③如何在显示窗口时,使最大化按钮变灰?①在App类里的C…App::InitInstance()中把m_pMainWnd->ShowWindow(SW...
阅读全文
摘要:1.属性页的添加:创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch;最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码...
阅读全文
摘要:有时,花上几个小时阅读、调试、跟踪优秀的源码程序,能够更快地掌握某些技术关键点和精髓。当然,前提是对这些技术大致上有一个了解。 我通过几个采用 CSocket 类编写并基于 Client/Server (客户端 / 服务端)的网络聊天和传输文件的程序 ( 详见: 源代码参考 ) ,在调试这些程序的...
阅读全文
摘要:中国人自古就有自右至左、从上到下书写汉字的习惯。而当我们在自己所编写的应用程序中使用输出函数输出的总是自左至右的横排文字。有没有可能在我们的应用程序中实现竖写汉字的效果呢?笔者偶然发现了一种利用VC实现竖写汉字效果的方法,现在就把它介绍给大家。 Windows系统内置了许多名称以“@”开头的字集,...
阅读全文
摘要:MFC应用程序中处理消息的顺序1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数3....
阅读全文
摘要:原帖及讨论:http://bbs.bccn.net/thread-211413-1-1.html效果描述:鼠标点击并拖动某一结点可以把它以动到其他结点下。原理:把一个结点机器下面的所有结点在需要释放的位置拷贝,释放后再把原来位置的结点删掉,结点拖动主要用到三个系统消息。1.OnBeginDrag:选...
阅读全文
摘要:---- 笔者曾在《软件报》2000年第5期中讨论过如何改变控件的颜色,但还有相当一部分的读者来信提问:一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对于这个问题,其实可以由几种不同的方法来实现,具体如下(粗斜体代码为增添的):---- 方法一:调用CWinApp...
阅读全文
摘要:什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37)(1)lib是编译时需要的,dll是运行时需要的。如果要完成源代码的编译,有lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。(2)一般的动态库程序有lib文件和dll文...
阅读全文
摘要:1、#include指令包含指定的文件2、#define指令预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了3、#typedef指令常用来定义一个标识符及关键字的别名它是语言编译过程的...
阅读全文
摘要:---- 摘要:---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解。---- 关键词:面向对象 消息映射...
阅读全文
摘要:MFC的消息循环(::GetMessage,::PeekMessage)消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情分两个步骤完成:1 “消息派送”:非对话框程序(MFC Doc/View架构)和对话框程序略有不同,但原理相差不大。但除了少数...
阅读全文