C++/SDK
文章平均质量分 59
郁闷阳光
作为码农,建此博客的目的是记录工作历程中的点点滴滴,分享工作中的感悟、思考。
展开
-
自编删除目录及其下属文件的函数
高版本的MS-DOS和Windows95 都提供了一个可以删除一个或多个目录及其下属文 件和目录的命令,即DeleteTree命令。然而,无论在MFC类库 还是在Win32函数库中,都没有相应的函数与之对应。这 样,当我们在自己设计的应用程序中需要用到DeleteTree 的功能原创 2011-09-06 22:29:21 · 422 阅读 · 0 评论 -
MFC多线程基础
还是老师的那个项目,以前由于计算量太大,导致程序经常出现假死的现象,因为程序只有一个线程,该线程主要用于处理计算上了,而对于消息队列的响应被忽略了。因此解决的办法就是用两个线程,一个线程用于计算,一个线程用于处理消息。 到网上找了一些资料,发现在MFC中把线程分为两转载 2011-09-27 10:39:27 · 486 阅读 · 0 评论 -
应用程序中超文本浏览功能的设计与实现
摘 要 本文介绍了 Microsoft 公司提供的 IE 控件,以及在应用程序中利用 IE 控件实现超文本浏览功能的两种方法。 关键词 IE控件,控件包容器,超文本,浏览 具有非线性表达方式的、符合人类认知模型的超文本模式,已成为文本库组织结构的主流。转载 2011-09-29 14:14:55 · 519 阅读 · 0 评论 -
怎样加载其他的应用程序?
三个SDK函数 winexec, shellexecute,createprocess可以使用。WinExec最简单,两个参数,前一个指定路径,后一个指定显示方式.后一个参数值得说一下,比如泥用 SW_SHOWMAXMIZED方式去加载一个无最大化按钮的程序,就是Neterm,c原创 2011-10-13 11:53:52 · 359 阅读 · 0 评论 -
如何检索原先的Task Manager应用程序使用的任务列表
原先的Task Manager应用程序显示顶层窗口的列表。为了显示该列表,窗口必须可见、包含一个标题以及不能被其他窗口拥有。调用CWnd:: GetWindow可以检索顶层窗口的列表,调用IsWindowVisible、GetWindowTextLength以及GetOwner可原创 2011-10-13 11:55:41 · 371 阅读 · 0 评论 -
进程的实例句柄
WinMain函数中的句柄值实际上是个基本内存地址,它指出系统在何处把EXE文件装载入进程的地址空间。例如,如果系统打开了可执行文件,在地址0X400000处装载了它的内容,那么进程实例句柄的值就是0X400000。这个基本地址是连接器决定的,当然,我们也可以自己设定,不同版本的原创 2011-10-13 10:41:04 · 984 阅读 · 0 评论 -
获取进程的当前目录
系统记录中进程的当前驱动器和目录,但是并非为所有的驱动器记录当前目录。不过,操作系统通过环境变量对其有一些支持。 =c:=c:\ultil\bin =d:=d:\program如果我们调用Win32函数的时候,传递给它一个指定驱动器,并且该驱动器不是当前驱动器,系统就原创 2011-10-13 17:05:05 · 470 阅读 · 0 评论 -
进程的创建以及退出
我们可以在程序中调用CreateProcess(),创建一个进程,该函数会创建一个进程内核对象以及一个线程内核对象,并且将 其计数设为1,在该函数成功返回前,会将子进程的进程内核对象以及线程内核对象句柄拷贝到结构体中,因此,该函数成功返回后,进程内核对象与线程内核对象的计数都变为原创 2011-10-13 22:43:26 · 636 阅读 · 0 评论 -
Windows中如何计算时间间隔(1)使用CTime 和CTimeSpan
时间函数在我们的程序中是使用频率较高的函数,现将其归纳总结一下,这一章主要讲下CTime 和CTimeSpan,前者表示一个时间点,而后表示一个时间段。CTime代表的是绝对时间,CTime andCTimeSpan 没有虚函数,大部分函数为内联函数,类对象的大小都为8.CT原创 2011-10-17 10:56:22 · 3605 阅读 · 0 评论 -
遍历文件夹并建成目录树
前些日子,我在做程序中遇到这样一个问题,要用树型控件快速浏览指定文件夹中的文件,经过一番周折,终于做出来了,想到有些仁兄可能遇到和我相同的困难,所以将我的做法写出来,希望对大家有些帮助!基本原理是用了函数的递归调用,再加入参数跟踪。我在调试程序的时候,跟踪发现:程序只有在原创 2011-10-17 14:22:10 · 532 阅读 · 0 评论 -
遍历文件夹并建成目录树(2)
这个是在上个版本上面修改而来,没有目录级数的限制。BOOL CFileTreeDlg::OnInitDialog(){ CDialog::OnInitDialog(); // Set the icon for this dialog. The framewo原创 2011-10-17 15:45:55 · 725 阅读 · 0 评论 -
Windows中如何计算时间间隔(2)COleDateTime 和COleDateTimeSpan类
COleDateTime 和COleDateTimeSpan 也是常用的2个时间类,其用法类似于前面的CTime和CTimeSpan.先分别进行说明,下面的内容引用自MSDN。 COleDateTime没有基类。 COleDateTime类封装了OLE自动化中原创 2011-10-17 11:31:08 · 3202 阅读 · 0 评论 -
Windows中如何计算时间间隔(2)使用SYSTEMTIME和FILETIME
SYSTEMTIME和FILETIME是两个结构体,定义如下:typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD原创 2011-10-17 11:58:56 · 2364 阅读 · 0 评论 -
如何播放大型 WAV 文件?
平时,你在多媒体软件的设计中是怎样处理声音文件的呢?使用Windows 提供的API函数 sndPlaySound来实现WAV文件的播放?但是,你有没有遇到过这种情况呢:当WAV文件大于可用内存时,sndPlaySound 函数就不能进行播放!!!那么,如何利用MCI播放大型音频原创 2011-10-18 09:36:36 · 789 阅读 · 0 评论 -
用Win32 SDK写一个简单的计算器
用MFC做计算器非常容易,大家都认为用SDK做非常难, 但是我认为只要你的思路正确,做起来也是一样得心应手。 由于SDK做工程也是有规律可寻,就是建立框架然后再对框架进行消息处理。 所以我学VC++一个多月来编出来了我的第一个小程序,在这里和各位VC爱好者交流交流。做计算器之原创 2011-10-18 11:16:57 · 603 阅读 · 0 评论 -
如何让程序自动管理线程
引言多线程是一种很好的程序机制,使用线程可以充分的利用电脑资源,进行并行的业务处理。不过好的东西总有它的不足。线程是好,不过滥用,或管理不当就会造成线程混乱,内存漏洞,造成电脑速度变慢,反应迟钝。想法于是有人提出能不能让线程自己管理自己,把这复杂的工作交给电脑来处转载 2011-10-18 11:36:00 · 284 阅读 · 0 评论 -
运用多线程技术实现文件的快速搜索
操作系统一般都提供了文件搜索的功能,但采用的是顺序搜索,搜索效率很底。而且按此法编程十分烦琐,在目录层次很多时,往往不好处理。本文采用多线程技术实现文件的快速搜索,代码量很少,执行效率极高。其基本思想其实很简单,就是找到一个目录就开辟一个线程,文件的话当然在线程内就处理了。这转载 2011-10-18 11:46:15 · 513 阅读 · 0 评论 -
一个简单的读写注册表实例
一、说明: 注册表是Windows重要组成部分,注册表记录了大量有关电脑软硬件的信息。注册表中的值通过其名称标识。值名称由与键名相同的字符组成。值本身可以是字符串、二进制数据或者是32位无符号值。在这里我们主要运用以下技巧:(一)、预定义的注册表键。注册表包含原创 2011-10-18 11:53:48 · 330 阅读 · 0 评论 -
关于内联汇编的几个技巧
1. 内联汇编嵌入VC语句:在VC中内联汇编非常方便,只需要按照如下格式__asm{//汇编语句}请看如下示例代码void CAlcmemDlg::OnButton3() { DWORD d=(m_size*1024*1024)/size原创 2011-10-18 14:06:40 · 596 阅读 · 0 评论 -
干干净净杀死进程
最近在写程序时碰到这样一个问题:我想将文件备份到网络驱动器上,但是有一些文件正在被其它程序使用,处于打开状态,而且是被独占打开,这时是没法对文件进行备份操作的。因此,要想备份这些文件,必须将打开它们的那些进程kill掉。那么如何干净地杀死这些打开文件的进程呢?相信看完本文后,自然转载 2011-10-18 14:26:27 · 405 阅读 · 0 评论 -
C++指针使用方法解惑
在下列函数声明中,为什么要同时使用*和&符号?以及什么场合使用这种声明方式? void func1( MYCLASS *&pBuildingElement ); 论坛中经常有人问到这样的问题。本文试图通过一些实际的指针使用经验来解释这个问题。原创 2011-10-18 14:33:38 · 276 阅读 · 0 评论 -
使用CSockets进行文件传送
是一对实现在两台计算机间传送文件的函数,我没有看到过使用CSocket进行文件传送的代码,希望此代码对你有用.代码中包含两个函数,第一个用于服务器端,第二个用于客户端.需要说明的是本文提供的方法并不适用于大型文件的传送.下面给出服务器端代码:void SendFile原创 2011-10-18 14:35:28 · 262 阅读 · 0 评论 -
用CryptoAPI进行数据加密
因为过于复杂的加密算法实现起来非常困难,所以在过去,许多应用程序只能使用非常简单的加密技术,这样做的结果就是加密的数据很容易就可以被人破译。而使用Microsoft提供的加密应用程序接口(即Cryptography API),或称CryptoAPI,就可以方便地在应用程序中加入强转载 2011-10-18 15:53:32 · 538 阅读 · 0 评论 -
用VC++6.0制作ASP服务器控件简介
用ASP写网页的程序员,一定对VBSript语句“Set Conn=Server.Object(‘ADODB.Connection’)”非常熟悉。该语句是利用ASP的Server对象创建了一个数据库控件,它提供了一系列的方法和属性,可以帮助我们在ASP中方便的实现数据库的操作。类转载 2011-10-18 15:58:30 · 577 阅读 · 0 评论 -
Windows中回收站(Recycle Bin)的存取方法
问题: 我想用CFile::Remove(或其它可行的方法)删除一个文件,但是只是想将它送到Recycle Bin里面,而不是永久性地删除它,这样我的用户就可以在必要的时候能恢复这个文件。我不通过编程能不能实现?如果必须编程,那如何在程序中存取Recycle B转载 2011-10-18 16:03:23 · 3070 阅读 · 0 评论 -
VC中一个关于宏的使用问题
这儿是个关于宏的问题,我曾用过ATL的串转换宏,包括W2A,开始有些东西我还不太明白。为了使用这些宏,必须在函数的开始处用USES_CONVERSION来初始化某些局部变量。用就用吧,但是看看这个宏的定义,它有类似下面的代码:// 在atlconv.h文件中#defi转载 2011-10-18 16:36:30 · 298 阅读 · 0 评论 -
介绍一个直接浏览微软知识库文章的工具
介绍 如果你曾查过微软的知识库文章的话,一定有这样的不爽经历:先用浏览器访问msdn.microsoft.com,在那个小小的搜索编辑框中输入文章号码,然后等待查询结果返回,最后还要点击搜索结果中至少一篇文章的链接。这样做耽误相当多的时间。现在使用本文提供的工具后,一切原创 2011-10-18 16:46:34 · 780 阅读 · 0 评论 -
用VC设计托盘图标程序
Windows95/98/NT/2000中,任务栏的右边(托盘)常驻几个图标,如输入法切换图标、音量控制图标等,此外我们还经常遇到拥有托盘图标的软件,如金山词霸、有实时监测功能的杀毒软件等。这些软件在后台运行,通常不占用太多的屏幕资源,只在通知栏上放一个小小的标志。必要时我们可以原创 2011-10-18 16:57:30 · 400 阅读 · 0 评论 -
将视频演示作为应用程序的启动封面
在启动应用程序时演示一段生动的视频画面,会使您的软件增色不少。应该做到演示结束后自动开始主程序;或者在演示过程中,在屏幕上任意位置按下鼠标键立即结束演示,并开始主程序。利用Windows提供的 MCIWnd窗口类及宏命令,可方便地创建和开启视频窗口,并开始演示。---- 需要原创 2011-10-19 09:04:26 · 322 阅读 · 0 评论 -
在VC++中实现自动连续播放多媒体
内容提要 可视动画控件ActiveMovie是Microsoft公司开发的ActiveX控件,从开始的1.0版、1.2版到现在的2.0版,功能上已经有了很大的改进。由于该控件内嵌了Microsoft MPEG音频解码器和Microsoft MPEG视频解码器,所以能转载 2011-10-18 09:39:19 · 960 阅读 · 0 评论 -
隐藏你的鼠标
一、建立一个单文档的应用程序框架二、为隐藏主窗口,将OnCreate 删除。并在App类里修改m_pMainWnd指向ShowWindow(SW_HIDE)三、现在在mainframe的实现文件里添加如下内容:POINT mp,cursorNew;//////原创 2011-10-18 10:06:34 · 301 阅读 · 0 评论 -
在对话框和窗体中使用系统图标
大家知道,很多Windows程序都要使用MessageBox,只要在这个API函数的一个参数中使用MB_ICONQUESTION标志,便可以在MessageBox的对话框中显示问号图标。这样用不同的标志便可以显示不同的图标。与Windows以前的老版本相比,Windows 200原创 2011-10-18 11:07:32 · 505 阅读 · 0 评论 -
如何用C++编程获得某台机器的IP地址?
对于这个古老的问题,VC知识库的精华区以及以往的在线杂志中都有详尽不一的描述。本文提供的方法是一个比较完整的解决方案,并附有详细的实现细节。希望大家对这个问题有彻底的认识。其实,如果你熟悉 Windows 的Sockets API,并了解一些底层的Winsock知识。那么要获得某原创 2011-10-18 13:32:27 · 394 阅读 · 0 评论 -
点对点多线程断点续传的实现
在如今的网络应用中,文件的传送是重要的功能之一,也是共享的基础。一些重要的协议像HTTP,FTP等都支持文件的传送。尤其是FTP,它的全称就是“文件传送协议”,当初的工程师设计这一协议就是为了解决网络间的文件传送问题,而且以其稳定,高速,简单而一直保持着很大的生命力。作为一个程序转载 2011-10-18 13:41:30 · 601 阅读 · 1 评论 -
在MFC程序中显示JPG/GIF图像
如果你是一个使用VB编程的程序员,要在程序中显示JPG或者GIF图像简直易如反掌,将图像控件拖到Form中,分分钟即可搞掂。但是C++程序员要显示同样的图形却没有那么轻松,那么是不是要自己编写JPG解压缩代码呢?当然不用那么复杂啦!本文将针对这个问题讨论如何在MFC中显示JPG或原创 2011-10-18 13:45:17 · 418 阅读 · 0 评论 -
如何在对话框中加入工具条
MFC中使用CToolBar类管理工具条,以下是MSDN中的说明。类CToolBar的对象是带有一行位图按钮和可选分隔线的控件条。这些按钮可以像普通按钮、核选按钮或单选按钮那样动作。CToolBar对象通常是由CFrameWnd或CMDIFrameWnd派生的框架窗口对象的嵌原创 2011-10-18 13:55:37 · 503 阅读 · 0 评论 -
如何获取屏幕上各颜色的红、绿、蓝值
基本构成思想:原理很简单,只需要简要的三步。既:获取屏幕DC、得到关键代码实现:1、 获取屏幕DCHDC hDC = ::GetDC(NULL); //获取屏幕DC2、 获取当前鼠标位置像素值CPoint pt;GetCursorPos(&pt原创 2011-10-18 14:10:17 · 1549 阅读 · 0 评论 -
如何从Internet上有效而稳定地下载文件
UINT InternetGetFile (HINTERNET IN hOpen, CHAR *szUrl, CHAR *szFileName, HWND hwndProgress, int idStatusText, int idProgressBar);原创 2011-10-18 14:41:24 · 479 阅读 · 0 评论 -
如何获取网页密码框中的密码
前言本人是在家中上网,经常有一些BBS的密码懒得记了,就用IE的自动密码保存功能,这样一来是方便了,但却有一个麻烦,一旦机子不行了,想要重装操作系统了,这些密码却也取不出了,还得重新申请,好麻烦!因此我就写了一个工具,可以取得网页密码框的密码.因为网页密码框不是一般的转载 2011-10-18 14:44:24 · 776 阅读 · 0 评论 -
C++编程杂谈之三:面向对象(续)
上一篇我们涉及了面向对象的一个基本概念--封装,封装是一个相对比较简单的概念,也很容易接受,但是很多的场合下面,仅仅是封装并不能很好的解决很多问题,考虑下面的例子:假设我们需要设计一个对战游戏的战斗细节,在最初的版本中我们将支持一种动作--fight。假设我们有三种角色:fi转载 2011-10-18 14:51:06 · 384 阅读 · 0 评论