随笔分类 -  VC++

MFC
摘要:http://cid-47027e68f36cbaf5.spaces.live.com/blog/cns!47027E68F36CBAF5!308.entryMFC界面库: GUIToolkit 和 SYGUI官网:http://www.beyondata.com/GUIToolkithttp://www.codeproject.com/KB/library/guitoolkit.aspx?display=PrintAll&fid=4311&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr= 阅读全文
posted @ 2011-09-06 15:31 心随灵动 阅读(1416) 评论(0) 推荐(0) 编辑
摘要:CxImage CxImage是C++实现的功能强大的、能处理多种文件格式的图像管理类。它能够简单快速的实现图像的导入、保存、显示和变换。 为什么使用CxImage u 它是平台无关的 u 它是自由软件、免费的、开源的 u 支持多种平面格式:BMP、GIF、ICO、TGA、JPEG、PCX、PNG、TIFF、MNG、RAS等,还有更多! u 功能强大:几何变换、图像处理、图像格式转换等。 u 使用简单:下面的入门教程会给你展示这一点。 CxImage的功能Constructors 构造函数Initialization 初始化File 文件操作,主要是编解码Generic 图像基本变化DSP 图 阅读全文
posted @ 2011-09-06 09:16 心随灵动 阅读(553) 评论(0) 推荐(0) 编辑
摘要:在语言传输中,如果每次都把数据包发送影响流量,可以再发送前对数据包进行静音检测,如果是静音就不发送原理 :检测数据是否都在一个范围内,统计不在范围内的数据量,就算百分比,如果打印某个指定的比例就认识是静音//适合8位音频function TWaveIn.DetectSilence(Data: PByte; DataLen: DWORD): Boolean;constTHRESHOLD:DWORD =10;//范围HITPERCENT:DWORD=85;//错误率vari:Integer;dwHit:DWORD;begindwHit:=0;for i:=0 to DataLen-1 dobegi 阅读全文
posted @ 2011-08-31 17:51 心随灵动 阅读(1526) 评论(0) 推荐(0) 编辑
摘要:前段时间,搞了一阵声学回声消除,非常郁闷,因为没有成功,但可以说学到一点东西吧,至少理论上懂了一点。为什么需要声学回声消除呢?在一般的VOIP软件或视频会议系统中,假设我们只有A和B两个人在通话,首先,A的声音传给B,B然后用喇叭放出来,而这时B的MIC呢则会采集到喇叭放出来的声音,然后传回给A,如果这个传输的过程中时延足够大,A就会听到一个和自己刚才说过的话一样的声音,这就是回声,声学回声消除器的作用就是在B端对B采集到的声音进行处理,把采集到声音包含的A的声音去掉再传给A,这样,A就不会听到自己说过的话了。声学回声消除的原理我就不说了,这在网上有很多文档,网上缺少的是实现,所以,我在这把一 阅读全文
posted @ 2011-08-31 14:21 心随灵动 阅读(4668) 评论(0) 推荐(1) 编辑
摘要:随着贸易国际化,在软件开发过程中,常会碰到需在现有中文版软件加入多语言支持的情况。由于不同语言版本间的差别通常仅是软件操作界面的不同,为实现多语言支持,使用纯资源DLL是一个不错的解决之道。所谓纯资源DLL是指只包含资源的DLL,譬如:快捷键、对话框、字符串、菜单、工具条、位图、图标、版本信息等等。具体做法是:利用VC可视化编辑环境为每种语言制作一套资源ID一一对应的资源集并编译生成DLL文件。应用程序初始化时按预设的语言设置选择合适的资源DLL调入,使用资源时依据资源ID进行访问,这样即可实现软件的多语言支持。当然了,应用程序退出前,注意将动态调入的DLL文件占用的资源释放。现有一个心电图查 阅读全文
posted @ 2011-08-26 10:44 心随灵动 阅读(2036) 评论(0) 推荐(0) 编辑
摘要:在使用 GDI + 的 Microsoft 基础类 (MFC) 应用程序的调试版本时, 可能会出现类似于以下内容的错误消息:错误 C2660: Gdiplus::GdiplusBase::operator new: 函数不带三个参数 原因:在调试版本中 MFC 定义扩展到带有两个额外的参数的重载 new 运算符的 new 运算符的预处理器宏。额外的参数是源文件名称和代码行号。 MFC 可以使用此信息对程...在调试版本中 MFC 定义扩展到带有两个额外的参数的重载 new 运算符的 new 运算符的预处理器宏。额外的参数是源文件名称和代码行号。MFC 可以使用此信息对程序员在调试模式下时报告内 阅读全文
posted @ 2011-08-23 10:23 心随灵动 阅读(1686) 评论(0) 推荐(0) 编辑
摘要:VC++中GlobalAlloc()、malloc()和new()函数都可以用来实现内存的动态分配,那么它们之间有什么区别呢?三者的区别主要有以下几点:1、GlobalAlloc()函数在程序的堆中分配一定的内存,是Win16的函数,对应于系统的全局栈,而在Win32中全局栈和局部堆的区别已经不存在了,因此不推荐在Win32中使用该函数。2、malloc()是标准库函数,而new则是运算符,它们都可以用于申请动态内存。3、new()实际上调用的是malloc()函数。4、new运算符除了分配内存,还可以调用构造函数,但是malloc()函数只负责分配内存。对于非内部数据类型的对象而言,只使用. 阅读全文
posted @ 2011-08-23 09:29 心随灵动 阅读(706) 评论(0) 推荐(0) 编辑
摘要:首先,在StdAfx.h中静态调用diplus.lib,即由编译系统完成对DLL的加载,应用程序结束时卸载DLL的编码。如下#ifndef ULONG_PTR#define ULONG_PTR unsigned long*#include "GdiPlus.h"using namespace Gdiplus;#pragma comment(lib, "gdiplus.lib")#endif在类的头文件中定义,以下成员变量,用来初始化GDI+的使用和结束使用。GdiplusStartupInput m_gdiplusStartupInput;ULONG_P 阅读全文
posted @ 2011-08-19 11:01 心随灵动 阅读(1471) 评论(0) 推荐(0) 编辑
摘要:1.下载(GDI+ for VC6.0 SDK)GDIPlus文件将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中. 下载地址:http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip(引用他人的)2.在你将要使用GDI+的工程中,完成初始化工作:在StdAfx.h中加入#define ULONG_PTR unsigned long#include <Gdiplus.h>using namespace Gdiplus;#include "GdiPlus.h"3.在CApp头文件 阅读全文
posted @ 2011-08-19 10:58 心随灵动 阅读(268) 评论(0) 推荐(0) 编辑
摘要:今天看到论坛上有人在问上下文菜单管理器类CContextMenuManager的问题,记得做过,但是忘了,忙里偷闲记下来,免得下次又忘了... CContextMenuManager和CMenu同样是继承于CObject,请看这里。不过菜单画得比CMenu好看多了,因此很多人愿意使用它。如何使用大家MSDN就是了。 但是,假如你觉得不想创建一个CContextMenuManager类来管理你的菜单。其实,还有一个方法:CWinAppEx还有这么一个方法,CContextMenuManager类型,你想增加菜单的话,theApp.GetContextMenuManager()->AddMe 阅读全文
posted @ 2011-08-15 11:26 心随灵动 阅读(2404) 评论(0) 推荐(0) 编辑
摘要:sqlliteExpert下载http://www.sqliteexpert.com/download.html3Technorati 标签:c#+SqlLite注意事项:1、 ADO.NET Provider For SQLite 1.0.66版并不支持VS2005、只能在VS2008上用,使用VS2005的请用旧版。其中安装目录下WM的dll需要把dll和lib文件名中的066去掉,否则在WM上不能使用。2、SQLite的图形UI最好用SQLite Expert Personal,免费的,只不过英文版,支持UTF-8,不会乱码。sqliteadmin虽然支持中文界面,但数据容易乱码(不支持 阅读全文
posted @ 2011-08-10 11:46 心随灵动 阅读(2899) 评论(0) 推荐(0) 编辑
摘要:默认情况下,窗口是不响应WM_MOUSELEAVE和WM_MOUSEHOVER消息的,所以要使用_TrackMouseEvent函数来激活这两个消息。调用这个函数后,当鼠标在指定窗口上停留超过一定时间或离开窗口后,该函数会Post这两个消息到指定窗口。使用方法:1.在窗口类中定义一个变量来标识是否追踪当前鼠标状态,之所以要这样定义是要避免鼠标已经在窗体之上时,一移动鼠标就不断重复产生WM_MOUSEHOVER。BOOL _bMouseTrack=TRUE;2.在OnMouseMove中调用_TrackMouseEvent函数if (_bMouseTrack)//若允许追踪,则。{TRACKMO 阅读全文
posted @ 2011-08-08 21:52 心随灵动 阅读(332) 评论(0) 推荐(0) 编辑
摘要:方法一:/*创建全局互斥体,然后在进程启动时检查该互斥体是否已被创建只需要在InitInstance()中加入*/::CreateMutex(NULL, FALSE, "MyAPP");/*创建一个互斥体*/if(ERROR_ALREADY_EXISTS == GetLastError()){ AfxMessageBox("Already run!"); return FALSE;}方法二:一个程序可以运行多个实例(进程),那我们如何让它仅运行一个实例呢?很简单,使用#pragma编译器指令在进程的地址空间内创建一个“共享节”就可以 达到目的,这个“共享 阅读全文
posted @ 2011-08-08 11:57 心随灵动 阅读(896) 评论(0) 推荐(0) 编辑
摘要:转载自:http://blog.sina.com.cn/s/blog_56eda66b0100073j.html1、DirectX是什么DirectX(简称:DX)是微软推出的一套基于Windows系统的多媒体应用程式接口APIs函式。在开发中,DX分为两个部分,一个是运行库,通过DX编译出来的程式必须要有运行库的支持,另外一个是开发库,也就是常说的SDK,这部分是在编译DX程序中是必需的。DirectX是一种图形应用程序接口(API),简单的说它是一个辅助软件,一个提高系统性能的加速软件,微软创建开发的。他的意思不难理解,Direct是直接的意思,X是很多东西,加在一起就是一组具有共性的东西 阅读全文
posted @ 2011-08-04 17:25 心随灵动 阅读(1779) 评论(0) 推荐(0) 编辑
摘要:C++调用约定和名字约定调用约定:__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,2、__cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。注意:对于可变参数的成员函数,始终使用__cdecl的转换方 阅读全文
posted @ 2011-07-28 16:45 心随灵动 阅读(1155) 评论(0) 推荐(0) 编辑
摘要:什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用 8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和 中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。目前,在网络、Windows系统和很多大型 软件中得到应用。8bit的ANSI编码只能表示256种字符,表示26个英文字母是绰绰有余的,但是表示汉字,韩国语等有着成千上万个字符的非西方字符 肯定就不够了,正是如此才引入了UNICODE标准。 在软件开发中, 阅读全文
posted @ 2011-07-28 16:15 心随灵动 阅读(554) 评论(0) 推荐(0) 编辑
摘要:音频编解码标准PCMU(G.711U)类型:Audio制定者:ITU-T所需频宽:64Kbps(90.4)特性:PCMU和PCMA都能提供较好的语音质量,但是它们占用的带宽较高,需要64kbps。优点:语音质量优缺点:占用的带宽较高应用领域:voip版税方式:Free备 注:PCMU and PCMA都能够达到CD音质,但是它们消耗的带宽也最多(64kbps)。如果网络带宽比较低,可以选用低比特速率的编码方法,如G.723或 G.729,这两种编码的方法也能达到传统长途电话的音质,但是需要很少的带宽(G723需要5.3/6.3kbps,G729需要8kbps)。如果带 宽足够并且需要更好的语. 阅读全文
posted @ 2011-07-28 09:21 心随灵动 阅读(1662) 评论(0) 推荐(0) 编辑
摘要:VC 多线程编程一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:voidCSingleThreadDlg::OnSleepSixSecond(){ Sleep(6000);//延时6秒}编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象“死机”一样,不在响应其它消息。为了更好地处理这种耗时的操作,我们有必要学习——多线程编程。二、多线程概述进程和线程都是操作系 阅读全文
posted @ 2011-07-27 21:36 心随灵动 阅读(1087) 评论(0) 推荐(0) 编辑
摘要:首先我想大家应该先明白“壳”的概念。在自然界中,我想大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 最早提出“壳”这个概念的,据我所知,应该是当年推出脱壳软件 RCOPY 3 的作者熊 阅读全文
posted @ 2011-07-27 20:18 心随灵动 阅读(1162) 评论(0) 推荐(0) 编辑
摘要:一、基本概念1 比特率:表示经过编码(压缩)后的音频数据每秒钟需要用多少个比特来表示,单位常为kbps。2 响度和强度:声音的主观属性响度表示的是一个声音听来有多响的程度。响度主要随声音的强度而变化,但也受频率的影响。总的说,中频纯音听来比低频和高频纯音响一些。3 采样和采样率:采样是把连续的时间信号,变成离散的数字信号。采样率是指每秒钟采集多少个样本。Nyquist采样定律:采样率大于或等于连续信号最高频率分量的2倍时,采样信号可以用来完美重构原始连续信号。二、常见音频格式1. WAV格式,是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用 阅读全文
posted @ 2011-07-25 20:28 心随灵动 阅读(2411) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示