自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

benny5609的专栏

人生,到世上走一遭,只不过是单纯的体验与学习认识,当我们在临死的时候,可以光荣地对自己说:"我已领略过"便不枉此生。

  • 博客(39)
  • 收藏
  • 关注

原创 Button控件的重绘

在用VC6.0编写windows程序时,你是不是时常因为自己的界面不好看而自卑。从现在开始我就来尝试着使我们的程序旋起来。按钮是我们编写windows程序时不可缺少的控件之一。按一般用户的理解,不管窗口是否为输入焦点,当鼠标(准确的说应该是光标cursor)划过按钮时,按钮应该变色,表示这个地方是可以按下的。可是用VC6.0原始给出的按钮像个傻瓜一样,没有丝毫反应。其实要让他有反应还是很简

2007-12-25 21:40:00 1084

原创 CListCtrl自适应宽度

 void CListCtrlExDlg::AdjustColumnWidth(){// SetRedraw(FALSE);int nColumnCount = GetColumnCount();for (int i = 0; i {   m_wndList.SetColumnWidth(i, LVSCW_AUTOSIZE);   int nColumnWidth = m_wndList.Ge

2007-12-25 20:36:00 5339 1

原创 CListCtrl行高问题最终解决方法

解决方案:   1. 设置List Control的属性 Owen Draw Fixed.   2. 自定义CMyListCtrl, 继承于CListCtrl,并重载CListCtrl::DrawItem.         必须重载DrawItem函数,而不能自己处理WM_DRAWITEM,否则MFC处理时运行到CListCtrl::DrawItem会抱错。( 此函数的内容只有一条语句:

2007-12-25 20:35:00 7591 3

原创 重载CListCtrl::DrawItem

重CListCtrl派生新类,并 重载CListCtrl::DrawItem. void CListCtrlEx::DrawItem(LPDRAWITEMSTRUCT lpDIS) { CDC* pDC = CDC::FromHandle(lpDIS->hDC); LVITEM lvi = {0}; lvi.mask = LVIF_STATE;//|LVIF_IMAGE; lvi.stateMas

2007-12-25 20:30:00 2128

原创 c文件操作

文件操作

2007-12-25 14:49:00 1891

原创 深入浅出 CPropertySheet

 为了最大限度的发挥属性页的效用,首先让我们先从 CPropertySheet 继承一个新类,取名为 CMyPropSheet.接着便可以进行下面的各种操作: 一、隐藏属性页默认按钮 隐藏掉Apply应用按钮: propsheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;或隐藏掉Cancel取消按钮:CWnd *pWnd = GetDlgItem( IDCA

2007-12-18 15:46:00 1039

原创 非模式对话框使用手记

1、非模式对话框的打开: // 弹出无模式对话框   CDevPproperty *pDlg= new CDevPproperty;   pDlg->Create(IDD_DEV_PROPERTY,GetDesktopWindow());      // 填充设备属性,用SetDlgItemInt()时就不用再定义一个CString来将数据转换成字符串了   pDlg->SetDlgItemI

2007-12-13 11:38:00 1397

原创 程序开始时怎样隐藏界面

有很多应用程序要求一起动就隐藏起来,这些程序多作为后台程序运行,希望不影响其他窗口,往往只在托盘区显示一个图标。这些程序通常都是对话框程序,而对话框在初始化的过程上与SDI、MDI的初始化是不同的,对话框只需要DoModule或者是CreateDialog等等对话框函数调用一次便可,SDI、MDI则要好几步才行。这样看来,对话框在使用方法上面是隐藏了不少细节的,其中就没有SDI、MDI所要求的Sh

2007-12-13 11:18:00 2700

原创 CArchive原理

一.概述 CArchive使用了缓冲区,即一段内存空间作为临时数据存储地,对CArchive的读写都先依次排列到此缓冲区,当缓冲区满或用户要求时,将此段整理后的数据读写到指定的存储煤质。 当建立CArchive对象时,应指定其模式是用于缓冲区读,还是用于缓冲区写。 可以这样理解,CArchive对象相当于铁路的货运练调度站,零散的货物被收集,当总量到达火车运量的时候,由火车装运走。 当接到火车

2007-12-12 16:45:00 832

原创 浅析Windows编程的剪贴板机制

  摘要: 本文对Windows剪贴板机制作了深入、全面的阐述,具体内容包括:文本、位图、DSP、自定义格式剪贴板的使用和多数据项和延迟提交技术。  关键词: VC++6.0; 剪贴板机制;数据格式;延迟提交  Windows剪贴板  Windows剪贴板是一种比较简单同时也是开销比较小的IPC(In

2007-12-12 16:05:00 1062

原创 VC_CEDIT_SetSel()

作用:定制EDIT的所选择内容.间接地可以用于定位光标位置. 使用例子:EXP1:设置光标CEdit*      pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);   pEdit->SetSel(2,2);   pEdit->SetF

2007-12-12 14:50:00 10561 3

原创 如何在VC中实现用户自定义消息

 虽然VC中给出了很多预先定义好的消息,但是在编程时还是不够用,也可能发生冲突,为了解决这些问题,VC 还给用户提供了自定义消息的机制.使得VC 编程更加的灵活.    VC中一共支持4种方式来实现用户的自定义消息,下面就具体介绍:第一个:#define ON_MESSAGE(userMSG,userFUNC)宏也是很多用户经常使用的,具体使用方法分为以下几步 第一步:定义消息。开发Win

2007-12-12 14:15:00 2584

原创 初次尝试使用自定义消息

一直不知道自定义消息有什么用,这次尝试获益菲浅 写了一个带进度条的状态条类/////////////////////////////////////////////////////////////////////////////// CProgStatusBar window class CProgStatusBar : public CStatusBar{    

2007-12-12 14:07:00 958

原创 CWinApp

 描述         CWinApp类是所在Windows应用程序的基类.CWinApp为初始化每个应用程序的实例   提供成员函数.每个使用MFC的应用程序中只能含有一个CWinApp的派生对象.当其   他C++全局对象被构造,这个CWinApp对象也被构造;并且在Windows调用WinMain()   函数时可用.WinMain()函数已经包括在MFC基础类中了.            

2007-12-11 11:43:00 4114

原创 浅谈内存泄漏(三)

 使用BoundsChecker检测内存泄漏: BoundsChecker采用一种被称为 Code Injection的技术,来截获对分配内存和释放内存的函数的调用。简单地说,当你的程序开始运行时,BoundsChecker的DLL被自动载入进程的地址空间(这可以通过system-level的Hook实现),然后它会修改进程中对内存分配和释放的函数调用,让这些调用首先转入它的代码,然后再执行原来的

2007-12-10 23:50:00 883

原创 浅谈内存泄漏(一)

浅谈内存泄漏(一) 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在J

2007-12-10 23:49:00 796

原创 浅谈内存泄漏(二)

检测内存泄漏: 检测内存泄漏的关键是要能截获住对分配内存和释放内存的函数的调用。截获住这两个函数,我们就能跟踪每一块内存的生命周期,比如,每当成功的分配一块内存后,就把它的指针加入一个全局的list中;每当释放一块内存,再把它的指针从list中删除。这样,当程序结束的时候,list中剩余的指针就是指向那些没有被释放的内存。这里只是简单的描述了检测内存泄漏的基本原理,详细的算法可以参见Steve M

2007-12-10 23:49:00 644

原创 将CStdioFile类扩展,读取UNICODE文本文件

 最近因为要读取SQL脚本文件,用CStdioFile来读取脚本文件,却在程序调试时读取不了文件。后来看了一下文本文件格式,竟然是UNICODE格式的,原来在导出SQL脚本的时候,选项默认的是UNICODE格式。为了同时支持ANSI和UNICODE两种格式,在Codeproject站点上找到了CStdioFileEx类的代码,但在调试运行过程中发现,在生成UNICODE版本的执行文件时,运行没

2007-12-10 09:27:00 1155

原创 可以读写Unicode/Ansi文本文件的类

//好像C++中没有类能够读些Unicode格式的文本文件,所以我写了下面这个类。用法很简单,大家尝试几下就明白了。#pragma onceclass CStdioFileEx: public CStdioFile{public:CStdioFileEx();CStdioFileEx( LPCTSTR lpszFileName, UINT nOpenFlags );virtual BO

2007-12-10 09:26:00 1602

原创 CString的工作原理介绍 C++/VC

 看了很多人写的程序,包括我自己写的一些代码,发现很大的一部分bug是关于MFC类中的CString的错误用法的.出现这种错误的原因主要是对CString的实现机制不是太了解。    CString是对于原来标准c中字符串类型的一种的包装。因为,通过很长时间的编程,我们发现,很多程序的bug多和字符串有关,典型的有:缓冲溢出、 内存泄漏等。而且这些bug都是致命的,会造成系统的瘫痪。因此c

2007-12-09 23:16:00 1251 3

原创 #progma整理

#pragma预处理指令详解 在所有的预处理指令中,#Pragma  指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。  其格式一般为:        #Pragma  P

2007-12-09 23:12:00 1341

原创 CString源代码

CString使用的是引用技术,可以共享数据(这个大家都知道),另外空的CStirng是指向一个固定的地址的(_afxInitData).另外CStirng是有长度限制的2147483647(无符号int 的最大值).数据格式struct CStringData{ long nRefs; //引用记数 int nDataLength; //字符使用长度 int nAllocLength; //分配

2007-12-09 23:01:00 1577

原创 C++字符串完全指引之二 —— 字符串封装类

原文出处:CodeProject:The Complete Guide to C++ Strings, Part II 引言  因为C语言风格的字符串容易出错且不易管理,黑客们甚至利用可能存在的缓冲区溢出bug把C语言风格的字符串作为攻击目标,所以出现了很多字符串封装 类。不幸的是,在某些场合下我们不知道该使用哪个字符串类,也不知道怎样把一个C风格的字符串转换成一个字符串封装类。  这篇文章将介绍

2007-12-09 22:34:00 685

原创 C++字符串完全指引之一

引言  毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的,展示一些简单的用法,并告诉您在必要时,如何实现各种字符串类型之间的 转换。  在第一部分,我们将介绍3种字符编码类型。了解各种编码模式的工作方式是很重要的事情。即使你已经知道一个字符串

2007-12-09 21:44:00 821

原创 可以设置背景和文字颜色的Static控件

从CStatic类继承一个自己的Static类,相应WM_CTLCOLOR消息。下面是代码:.h文件:class ClxStatic : public CStatic{    DECLARE_DYNAMIC(ClxStatic)public:    ClxStatic();    virtual ~ClxStatic();    afx_msg HBRUSH CtlColor(CDC* /*pDC

2007-12-09 11:19:00 2962

原创 waveOutOpen函数介绍

这个函数打开一个给定的波形音频输出装置来进行回放。(The waveOutOpen function opens the given waveform-audio output device for playback)URL:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_wa

2007-12-07 10:42:00 6604 2

原创 为英雄无敌3写个游戏修改器

我是比较铁杆的英雄无敌3的fans,在网上看到这样的文章:http://game.china.com/zh_cn/play/10002765/20021113/11362720.html就是让我方英雄学会所有技能,真的蛮爽的学会28项技能修改法  首先,把你的英雄的士兵调到前面几格来,接着用FPE来搜索。例如你的士兵数:第一格3,第二格14,第三格4,那么就用 3,0,14,0,4,0 来搜索,就

2007-12-06 22:50:00 9176 1

原创 使用PostThreadMessage在Win32线程间传递消息

PostThreadMessage的原型是这样的BOOL PostThreadMessage( DWORD idThread,    UINT Msg,    WPARAM wParam,    LPARAM lParam);PostThreadMessage可以用于线程之间的异步通讯,因为它不用等待调用者返回,这也许是线程通讯中最简单的一种方法了。但是要注意以下问题1 .PostThread

2007-12-06 22:48:00 1204

原创 什么才是多线程安全的

对于多线程编程,很多人概念不清,写代码的时候要么是处处加锁,影响性能不说,还容易莫名其妙的死锁,还有人对多线程敬而远之。所以学习多线程编程最重要的不是学习API,而是理解什么才是多线程安全的代码从例子说起#include windows.h>#include process.h>long global1 = 0;volatile long global2 = 0;class MyClass{p

2007-12-06 22:47:00 1084

原创 API 层实现语音录制 1

我从前出于需要,上网寻找了关于录音部分的源代码,收获不大,现在把自己摸索的部分源代码公开出来吧,希望对部分人有用。     其实要实现声音的录制,可以用多种的方式(例如 mci ),我这里介绍的是在 API 的层面来实现,你可以对其中进行更多的控制。比方说,要音频裸数据存到你指定的内存中去。     先说一下要用到的 API , 录音通常都是使用 waveInXXX 一类 API 的,最主

2007-12-06 09:24:00 1069

原创 基于Visual C++6.0工具下的声音文件操作

声音是人类传递信息的重要途径,如果应用程序中包含声音信息,就可以大大增强它的亲合力;另外在科研开发过程中,声音信号的处理也是一个很重要的科学研究领域。Visual C++作为一个强大的开发工具,当然是声音处理的首选工具,但是在当前Visual C++相关的编程资料中,无论是大部头的参考书,还是一些计算机杂志,对声音文件的处理都是泛泛的涉及一下,许多编程爱好者都感到对该部分的内容了解不是很透彻,笔者

2007-12-05 22:31:00 1410

原创 Windows API (包含了所有Windows API)

Api函数名                               函数说明                             WIN16可用   WIN95可用   WINNT可用-------------------------------------------------------------------------------------------------------

2007-12-04 14:37:00 2144 1

原创 简单录、放音并保存为wav文件程序

引言我是C++的初学者,入门都要靠VCKBASE,好在里面有很多适合于初学者的例子,让我少走了很多弯路,为了回馈大家,我也把我最近刚完成的一个简单的小程序提供给大家,让那些曾经和我一样徘徊在C++大门之外的人能快些掌握要领,大家不妨看一看。本文以VC知识库第26期 栾义明 先生的《基于API的录音机程序》为基础的,在此深表感谢!相同之处不再重复,我在此基础上增加了将录音保存为wav文件的格式,便于

2007-12-04 09:44:00 2095

原创 DirectSound

  目录:  关于DirectSound  DirectSound设备    枚举可以使用的声音设备    创造DirectSound对象    设置合作级    检索硬件信息    扬声器的设置    压缩  DirectSound缓冲    静态缓冲和流缓冲    创建

2007-12-03 17:33:00 1172

原创 Windows CE 编程的十点忠告

1. 不要在仿真器上使用Windows NT库2. 不要混淆TCHARs和bytes3. 不要将Unicode 字符串放入奇数内存地址4. 在ANSI和Unicode字符串之间进行翻译5. 对于Windows CE 1.0的字符串转换,劈开(hack)6. 选择正确的字符串比较函数7. 不要使用相对路径8.移走了对calloc()和 time()函数的调用9. 不需要改变Win32 输入/输出(I

2007-12-03 14:57:00 1612

原创 基于API的录音机程序

一、数字音频基础知识 Fourier级数: 任何周期的波形可以分解成多个正弦波,这些正弦波的频率都是整数倍。级数中其他正线波的频率是基础频率的整数倍。基础频率称为一级谐波。 PCM: pulse code modulation,脉冲编码调制,即对波形按照固定周期频率采样。为了保证采样后数据质量,采样频率必须是样本声音最高频率的两倍,这就是Nyquist

2007-12-03 14:03:00 882

原创 VC++中播放声音的方法

声音是多媒体的一个重要组成部分,在应用程序中加入声音可以使界面更友好。在VC++中可以根据不同的应用要求,用不同的方法实现声音的播放。 一.播放声音文件的简单方法    在VC++ 中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音方法就是直接调用VC++中提供的声音播放函数BOOL sndPlaySound ( LPCSTR lpszSound

2007-12-03 13:28:00 931

原创 创建一个cab文件所需要INF文件

INF文件是一个文本文件,指定运行控件所需要下载和注册的组件(比如DLL或其它OCX)。一个INF文件描述了CAB压缩包中所有必须的文件。在缺省情况下,若客户端系统中有压缩包中的文件,则版本号相同的文件不被下载。一个INF文件(texture.inf)的示例为:                    [version]                signature="$CHICAGO$

2007-12-03 09:36:00 5951 1

原创 用来生成CAB安装文件的.inf文件制作(英文版)

Processor-Specific SectionsThe .CAB files created using an .inf file are processor specific: Each one can be used with only one type of processor. To create processor-specific CAB files, you must ap

2007-12-03 09:33:00 2273

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除