
VC/MFC编程
sxslyy
丹东软件开发
展开
-
玩玩数字图像处理之边缘提取
数字图像处理主要在以下两个方面有着相当大的应用前景:1)数字信号通讯及模式识别。 2)数字图像的修饰及制作。 如果要说数字图像处理有什么吸引我们的,可以举这样的例子:比如,你可以把自己认为最漂亮的五个美女的头像储存进数据库中,由图像分析程序分析得到你心目中最漂亮的女生的图像;再如,以后的大门可以不需要使用钥匙,只要装一个摄像探头,它可以根据指纹,头像等人体特征,判定谁是它认可的房屋主人。所转载 2007-07-14 15:25:00 · 1453 阅读 · 0 评论 -
用VC++实现console程序显示彩色文本
用vc++写console程序时,整天对着黑纸白字的屏幕,感觉很郁闷吧?很多人想用CONIO.H/GRAPHICS.H中的一些函数来实现,却发现VC++根本没有这些头文件。当然了CONIO.H/GRAPHICS.H是BORLAND TC/BC专有的头文件,所以vc++中根本没有这些文件。把这两个头文件COPY过来,然后用??答案当然是否定的。其实VC++中也有相关的函数来实现console彩转载 2007-08-01 11:04:00 · 746 阅读 · 0 评论 -
形形色色的自定义消息(下)
在前面,我们讨论了自身类中消息的传递方法和成组的消息传递,接下来的问题就是如何向不同的类中传递消息。其实在《解析VC++6中的指针 》中,我们讨论了如何在不同的类中获取其他类的指针的方法,,我们借用这种获取指针的方法就可以轻松的随心所欲的在各个类中传递消息了。 首先,定义消息的方式和我们在上面所说的是一样的(例如在框架类中向视图类发送消息): (1)在视图类.cpp中定义消息值: #de转载 2007-08-02 09:34:00 · 621 阅读 · 0 评论 -
形形色色的自定义消息(上)
摘要:自从发了5篇关于消息的文章,有的网友来信希望我讲一些比较实用的消息机制用法,这里我想就用户的自定义消息做一个全面的论述,希望能够解除你心头的困惑。 一、普通的自定义消息方法。 根据我在前面的几篇文章中提到的消息值的范围,我向大家都很清楚用户自定义消息的范围,不过,虽然说用会自定义消息从WM_USER开始,但是由于我们的工程里面一般还有很多其他的控件,他们也要占用一部分WM转载 2007-08-02 09:45:00 · 603 阅读 · 0 评论 -
应该使用哪个框架?用ATL和MFC来创建ActiveX控件3
下面的代码显示了MFCMsgTraffic控件是怎样将它的颜色和时间间隔属性保存起来的: void CMFCMsgTrafficCtrl::DoPropExchange(CPropExchange* pPX) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); COleControl::DoPropExchange(p转载 2007-08-02 09:50:00 · 719 阅读 · 0 评论 -
应该使用哪个框架?用ATL和MFC来创建ActiveX控件2
虽然基于MFC的COM类总是可聚合的(内置了对它的支持),ATL ObjectWizard使得你可以指定你的控件支持聚合,只是可聚合的,或者是独立的对象。根据你选择的聚合选项,ATL ObjectWizard使用一个宏来执行聚合策略。例如,缺省的COM类的实现是可聚合的——对象将既运行在独立的模式,又作为一个聚合的一部分。如果你使你的COM对象不可聚合,ObjectWizard把DECLARE_N转载 2007-08-02 10:05:00 · 716 阅读 · 0 评论 -
应该使用哪个框架?用ATL和MFC来创建ActiveX控件1
本文假定你熟悉MFC, ATL, and COM 摘要目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发。MFC代表了创建独立的Windows应用的一种简单、一致的方法;ATL提供了一种框架来实现创建COM客户机和服务器所必须的样板文件代码。这两种框架在它们对于开发ActiveX的用途上会合了。我们将看看这两种框架是如何适用于创建ActiveX控件的——突出其优缺点,亲自转载 2007-08-02 10:08:00 · 943 阅读 · 0 评论 -
在VC中怎样实现软件的注册机制
现在网上下载的软件大部分都需要注册后才能使用其全部的功能,也就是说当前大部分软件都是建立了注册机制的,对于一个刚进入软件行业的程序员来说一定非常想了解其中的注册机制是怎样实现的。其实用VC开发软件,是可以很方便地加入注册机制的。 要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1、如何加入注册检测,判断软件是否注册;2、如何生成注册码,如何保证一个用户名只生成转载 2007-08-01 10:18:00 · 1035 阅读 · 0 评论 -
用VC++和Winsock实现与HTTP服务器通话
一、引 言 ---- Windows Socket API是一套开放的、支持多种协议的Windows下的网络编程接口,它包 括一个标准的 Berkeley Socket功能调用的集合,以及为Windows所作的重要扩充。 Windows Socket经过不断完善并在众 多公司的全力支持下,已成为Windows网络编程 的事实上的标准。 ---- 本 文 将 在VC++ 5.0 环 境 下 介转载 2007-08-02 09:29:00 · 591 阅读 · 0 评论 -
Visual C++实现远程线程嵌入技术
远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源。 但是很少有人知道,通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程(是远程进程耶!)的地址空间转载 2007-08-01 11:01:00 · 545 阅读 · 0 评论 -
再谈线程池的实现
前言。 在win2K以后的操作系统里有几个线程池的api : QueueUserWorkItem, WorkItemFunc, 等(可参阅msdn)。 这里我不是介绍他们的用法。 我现在一个工程当中,需要用到线程池,主要是效率的考虑。 在很早之前我其实已经实现过线程池,只是那时,没有整理,另一方面是,工程一般都很大,不适合为大家作为范例来学习。 我这里实现了一个线程池,主要是我也想把自转载 2007-08-01 10:47:00 · 633 阅读 · 0 评论 -
理解软件保护技术之采用时间限制
(1) 定时器 有些程序的试用版每次运行都有时间限制,例如运行10分钟或20分钟就停止工作,必须重新运行该程序才能正常工作。这些程序里面自然有个定时器来统计程序运行的时间。 1)使用Settimer() 常用的计数器是函数Settimer(),调用这个函数创建的定时器可以发出消息VM_TIMER,或者在定时期满时调用一个回调函数。 使用这个函数会使时间延时,精度不高。 2)使用tim转载 2007-07-14 15:31:00 · 718 阅读 · 0 评论 -
理解软件保护技术之功能限制的程序
这种程序一般是DEMO版或菜单中部分选项是灰色。有些DEMO版本的部分功能里面根本就没有。而有些程序功能全有,只要注册后就正常了。 你使用这些DEMO程序部分被禁止的功能时,会跳出提示框,说这是DEMO版等话,它们一般都是调用MessageBox[A] 或 DialogBox[A]等函数。你可在W32DASM反汇编它,一般能找到如下字符串:"Function Not Avaible in De转载 2007-07-14 15:39:00 · 560 阅读 · 0 评论 -
关于DLL的若干问题
关于DLL的若干问题 -------------------------------------------------------------------------------- 经常有朋友们在论坛上问有关DLL的问题,现做如下总结:1. 在程序里调用DLL的输出函数,出现非法操作(堆栈错误)这个问题一般是由于函数的实际定义跟使用时的声明不一致引起的。要弄清楚这个问题,必须明白转载 2007-07-14 15:03:00 · 578 阅读 · 0 评论 -
防止全局钩子的侵入
防止全局钩子的侵入 Windows消息钩子一般都很熟悉了。它的用处很多,耳熟能详的就有――利用键盘钩子获取目标进程的键盘输入,从而获得各类密码以达到不可告人的目的。朋友想让他的软件不被别人的全局钩子监视,有没有办法实现呢?答案是肯定的,不过缺陷也是有的。 首先简单看看全局钩子如何注入别的进程。 消息钩子是由Win32子系统提供,其核心部分通过NtUserSetWin原创 2007-07-14 15:17:00 · 1144 阅读 · 0 评论 -
理解软件保护技术之Key File保护
Key File(注册文件)是一种利用文件来注册软件的保护方式。Key File一般是一个小文件,可以是纯文本文件,也可以是包含不可显示字符的二进制文件,其内容是一些加密过或未加密的数据,其中可能有用户名、注册码等信息。文件格式则由软件作者自己定义。试用版软件没有注册文件,当用户向作者付费注册之后,会收到作者寄来的注册文件,其中可能包含用户的个人信息。用户只要将该文件放入指定的目录,就可以让软件成转载 2007-07-14 15:34:00 · 952 阅读 · 0 评论 -
怎样在SDK程序中使用MFC中的辅助类
由于MFC中的辅助类,如CFileDialog,CFileFind,CString等使用起来非常的方便如果用API来完成相应的工作,则需要自己完成大量的重复工作,使用MFC的辅助类可以节省大量的开发时间,具体方法如下: 1.加入相应的头文件 由于在SDK程序中一定要包含windows.h头文件,所以在使用MFC中的类时,如加入afx.h一类的头文件会有一个提示与windows.h相冲突,解转载 2007-08-01 10:36:00 · 617 阅读 · 0 评论 -
在单独线程中执行对象成员函数
问题的提出: 实际上所有线程都是用来处理C函数的,而不是C++类成员函数。标准库中提供一个API函数,这个函数以回调函数指针作为线程的执行代码并在单独的线程中调用回调函数。问题是在这样的线程库中不能创建执行对象成员函数的线程;只能使用普通的函数。因此,下列代码是失败的: // 启动线程库函数的线程 int thr_create (void (*pf)(), void* prm, th转载 2007-08-01 10:40:00 · 503 阅读 · 0 评论 -
在C程序中处理汉字
学习过C语言的人也许有时会遇到这样一个问题:如何用变量存储汉字以及对这些变量进行操作。目前许多C语言参考书中都没涉及到这个问题,程序中多为处理英文变量和英文字符串,涉及到汉字的情况也大都是在printf语句中输出提示信息或结果,如: printf("请输入a,b的值:/n"); printf("输出功率为%s千瓦。/n",power); 考虑到还有相当一部分人在学习和应用C语言,因此转载 2007-08-01 10:43:00 · 1247 阅读 · 0 评论 -
设计网络服务器ISAPI
阅读本文需要具备基本的Web/CGI 、MFC 以及Visual C++ v4.1或更新版本的知识。 ISAPI 与CGI 很长时期以来,CGI都作为交互web开发的一个标准工具。CGI脚本允许使用者用各种语言来编写简单的应用程序,它在网络服务器上运行并直接输出到用户的网络浏览器上。用户的数据通过环境变量或者标准输入设备输入,程序则会通过标准输出返回HTML文本。这么一个简单的转载 2007-08-16 10:24:00 · 641 阅读 · 0 评论 -
如何制作Windows自定义边框的对话框
在Windows应用程序中,对话框是应用最广泛也是比较难控制其风格(外表)的 一类窗口。Windows 3.x所提供的传统的对话框一般都有一个单调的蓝色的边框 和白色窗口背景,即使采用Borland C++所提供的BorDlg风格的对话框,用自定义 控制(BWCC)来美化对话框的背景及内容,呆板的边框还是一成不变的。相信用过 Windows 95的朋友在享受其强大功能的同时,一定也为它所提供的具有原创 2007-08-16 10:25:00 · 764 阅读 · 0 评论 -
如何让两个对话框的同时显示
对于VC++初学者,可能会遇到这样一个问题:一个基于Dialog的MFC AppWizard应用程序,再Insert一个对话框,如何同时显示这两个对话框呢? 其实这个问题很简单,想要在屏幕上同时显示两个对话框,并且这两个对话框都可以被激活,则至少第二个对话框应该为非模态对话框。启动非模态对话框的方法与启动一个普通窗口的步骤是一样的,即先调用窗口类的Create()函数创建一个窗口对象,再用Sh原创 2007-08-16 10:27:00 · 1392 阅读 · 0 评论 -
Visual C++中的图形特技
Visual C++中的图形特技 出处:计算机世界网 随着计算机信息表示及实现的多媒体化,在许多学习软件、游戏软件,以及多媒体课件制作软件中,经常使用各种图形显示技巧,如图形的推拉、交错、雨滴状、百页窗、积木随机堆叠等显示模式。这样使画面变得更为生动活泼,更能吸引用户,也为更好地发挥软件的功能奠定了基础。本文就Visual C++ 6.0中实现图形的各种显示技巧的原理及具体方法做些探讨。转载 2007-11-01 13:06:00 · 547 阅读 · 0 评论 -
一些防止闪烁的方法
在作界面的时候经常碰到一些比较复杂的作图情况,由于作图过于复杂和频繁,所以时常出现闪烁的情况,几经磨练,虫虫找到一些防止闪烁的方法,写下来和大家共享。 1、将Invalidate()替换为InvalidateRect()。 Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域内的内转载 2007-11-01 13:09:00 · 1442 阅读 · 0 评论 -
对图像的局部进行放大
在有些应用中需要对图像的局部进行放大,本例程用VC++ 5.0编写,用CDC的StretchBlt实现图像放大镜,主要有以下功能:1.移动MOUSE放大显示图像的不同部位,2.左击增加放大倍率,3.右击减少放大倍率。 当放大倍率较大时产生抖动。 ---- 实现过程: ---- 1.使用AppWizard生成SDI应用IMAGE。 ---- 2.为CImageView增加以下成员数据:转载 2007-11-01 13:07:00 · 973 阅读 · 0 评论 -
用DirectShow实现QQ的音视频聊天功能
当下比较流行的即时通信工具,比如MSN,QQ等都实现了视音频的功能,通过视频,音频,我们可以更好的和朋友通过网络进行沟通,本文通过DirectShow技术模拟QQ实现了视频和音频的采集,传输,基本实现了QQ的视音频聊天的功能。 网络视音频系统主要功能就在于视音频的采集,网络传输两个方面,通过Video Capture系列API函数,你就可以轻松的搞定视频捕捉,但是对于视频的网络传输,则要费一转载 2007-12-04 16:28:00 · 1196 阅读 · 0 评论 -
关于volatile关键字的说明以及测试
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint; 当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前转载 2007-12-04 16:32:00 · 642 阅读 · 0 评论 -
C++/VC++编程的疑难问题及解答
我“C++/VC++编程的疑难问题及解答”给出了三个关于C++/VC++编程的问题及其可能的解决方法。这篇文章再给出几个问题,大家多给我提意见啊,有问题可以给我发信啊!标准程序库问题,再谈list的迭代器是否可以随机移动? 标准程序库问题,vector的resize()和reserve()函数的区别 标准程序库问题,vector的内存重分配问题 动态链接库与静态链接库 标准程序库问题,再谈li转载 2007-12-04 16:34:00 · 602 阅读 · 0 评论 -
VC++中使用内存映射文件处理大文件
摘要: 本文给出了一种方便实用的解决大文件的读取、存储等处理的方法,并结合相关程序代码对具体的实现过程进行了介绍。 引言 文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理的函数和类,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile类等。一般来说,以上这些函数可以满足大转载 2007-12-04 16:35:00 · 680 阅读 · 0 评论 -
个人VC串口通信经验及相关知识总结(原)
0.多用异步通讯方式,个人一般开一个线程来监视串口数据接收;1.个人通常采用基于ComStat.cbInQue的循环查询+WaitCommEvent等待EV_RXCHAR相结合的方式,循环查询方式准确,不丢失数据,但占CUP时间,WaitCommEvent不占时间但只能读取调用其后接到的字符.两者结合,则可以互补.必请醒的是,当进行连续大数据串行数据时,这种方式中的用WaitCommEve原创 2009-02-08 20:23:00 · 2657 阅读 · 2 评论 -
Visual C++-图像平滑滚动效果的VC实现
Visual C++-图像平滑滚动效果的VC实现 前言: 在图像的编程中,经常会遇到这样一种情况,在有限的区域中显示了一幅大图,这时要浏览图像的各个部分,这就需要用到图像的滚动。关于它的实现,许多书都有提及,但其中的关键点和难点,即拖动中的刷新和闪烁问题,却讲述的不多,这也是我写本文的目的所在,下面我将详细分析实现方法。 实现效果及实现方法: 在图像区域中按下鼠标左键,转载 2007-11-01 13:04:00 · 1758 阅读 · 0 评论 -
VC实现光驱、软驱、USB的禁用和启用
由于工作的实际需要,需要对光驱,软驱,USB的启用和禁用实现控制。参考大家提供的对网卡禁用的代码,实现了光驱,软驱,USB的启用和禁用。主要实现代码如下:// 必要的头文件和要链接的LIB文件#include #include #pragma comment(lib, "setupapi.lib")#pragma comment(lib, "shlwapi.lib") // device in转载 2007-06-05 17:43:00 · 728 阅读 · 0 评论 -
经验总结之防止窗口闪烁的方法
1、将Invalidate()替换为InvalidateRect()。 因为Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而InvalidateRect()仅仅重画Rect区域内的内容,所需时间会少一些。所以替换之后在很大程度上会减少闪烁。如果你确实需要改善闪烁的情况,计算一个Rect所用的时间比起重画那些不需要重画的内容所需要的时间要少得多。 2、不要让系统擦转载 2007-08-16 11:46:00 · 1117 阅读 · 1 评论 -
如何控制窗口框架的最大最小尺寸
处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,因此记 住要考虑工具条,卷动条等等的大小. // 最大最小尺寸的象素点 - 示例 #define MINX 200 #define MINY 300 #define MAXX 300 #define MAXY 400 void CMyFrameWnd::OnGetMinMaxInfo(MINMA转载 2007-08-16 11:49:00 · 746 阅读 · 0 评论 -
明明白白看MFC之程序框架(三)
三、MFC程序结构大剖析 在前面我分别给出了SDK和MFC应用程序的框架,并且稍微理了一下它们之间的对应关系。但是对于MFC程序来说,要想真正搞懂它的框架的话,还是不够的。现在我要做的事就是继续去分析一下上面的MFC程序,期望能够如我的标题所言,明明白白的看透MFC的应用程序框架。 首先就是看一下应用向导生成的MFC应用程序都有哪些主要的文件,包含哪些类以及相关类的对应功能和他们之间转载 2007-08-17 09:39:00 · 779 阅读 · 1 评论 -
明明白白看MFC之程序框架(二)
二、 MFC应用程序结构 在《明明白白看MFC之程序框架(一)》中我分析了一个经典的SDK应用程序的结构,现在可是要进入主题“MFC应用程序结构”了。MFC应用程序有好多种,为了能够更清楚地与前面的文章形成对比,我们在这里看一个SDI的应用程序,当然例子还是经典的“Hello World”了。在使用向导生成应用程序后,会发现有好几个文件,首先我们不管有哪些文件,按照程序执行得主线抽取主要的源程转载 2007-08-17 09:40:00 · 671 阅读 · 0 评论 -
明明白白看MFC之程序框架(一)
对于程序员来说,如果要提高编程效率,一个好用的,功能强大的并且可以得心应手使用的编程工具往往会给我们程序员带来莫大的方便。其实对于现在的编程工具来说,使用哪一种工具都不是问题的关键,重要的是你能够使用到什么程度,毕竟现在的工具都是非常的强大,对于一般的编程任务来说还没有不能够胜任的工具,否则的话恐怕他就不可能在这个世界上存在哪怕是只有一个月的生命。但是根据个人所好以及周围的人的影响,我们都会去使用转载 2007-08-17 09:46:00 · 645 阅读 · 0 评论 -
灵活运用c语言实现高级功能
C语言以其简洁、灵活、表达能力强,产生的目标代码质量高,可移植性好而著称于世。巧妙、灵活地运用C可以进一步挖掘出其潜在的功能。 1、字符数组和字符指针 指针和数组是C最具特色的一部分。数组是占用预分配的连续空间,C语言中对连续空间的访问可以有以下几种方法:加下标构成数组是最直接的;常量字符串也可以类似访问,例如,下面语句就可将字符串打印出来。 for(i=0;i putcha转载 2007-08-17 09:49:00 · 845 阅读 · 0 评论 -
利用VC++编程实现程序自动启动
内容提要 在工作中经常遇到一些程序,当计算机启动时会自动将该程序加载,以实现对计算机的监控等特殊的目的。本文就针对这个问题,阐述了系统加载特定程序的原理和方法,同时利用VC++ 6.0编程实现这种特定的功能的,并对其中的关键代码进行了分析。 文章正文 工作中经常遇到一些程序,它们在系统启动的过程中,自动打开并运行,以便实现对系统的监控或者病毒的检测等特定的目的,典型的例子就是常用的一些杀毒软件转载 2007-08-17 09:51:00 · 1196 阅读 · 0 评论 -
基于Visual C++的Winsock API研究(一)
为了方便网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。Socket实际在计算机中提供了一个通信转载 2007-08-22 10:16:00 · 744 阅读 · 1 评论