存档

‘MFC开发’ 分类的存档

基于WinPcap开发嗅探器程序

2012年10月23日 163 条评论

这是我上课的一个实验,基于WinPcap开发一个简单的嗅探器,代码写的很一般,Hard Code Everywhere! 当然有兴趣的也可以下下来看一下。下面简单介绍下开发环境的搭建以及中间需要用到的一些编程要点。

一、实验环境构建
本次实验环境为Visual Studio 2010专业版 + WinPcap 4.1.2 + WinPcap 4.1.2 Developer’s Pack;
安装好WinPcap后,解压开发包文件WpdPack_4_1_2.zip,并把下面的Include文件夹以及Lib文件夹复制到工程目录下,配置工程设置,为“附加包含目录”添加Include文件夹相对路径,为“附加库目录”添加Lib文件夹相对路径,同时给“附加依赖项”添加“Packet.lib”、“wpcap.lib”选项,给“预处理器定义”添加“HAVE_REMOTE”、“WPCAP”选项,在stdafx.h头文件中增加对pcap.h头文件的包含,这样整个开发环境就配置好了,而且源代码可以在其他电脑上编译,不必再次安装WpdPack开发包以及设置头文件和库文件的路径。[......]

VS2008 SP1 MFC程序在Windows 2000下提示找不到gdiplus.dll

2012年4月20日 没有评论

用Visual Studio 2008 SP1写了一个MFC程序,拿到Windows 2000下运行的时候提示找不到gdiplus.dll,这个程序确实不需要gdiplus.dll,但在导入表中确实有gdiplus.dll。就是SP1的补丁搞的鬼。

微软在Visual Studio 2008 SP1补丁发布时特地说明不要gdiplus.dll MFC程序也可以在2000下运行(Bugs fixed in MFC in Visual Studio 2008 SP1):

Running MFC applications on Windows 2000 (with or without GDIPlus.dll) is supported.
在CodeGuru上的一个帖子MFC and GDI+ problem上找到了解决方案:
把CProjectNameApp的基类从CWinAppEx改为CWinApp就行了,是要改动三处:

头文件ProjectName.h中类的定义:class CProjectNameApp : public CWinApp[......]

Object Slicing与虚函数

2012年1月14日 14 条评论

终于回到家里了,在此不禁要感慨一下“春运”的神奇。在家里没什么事,就看点书吧,可是东西太多,书带一两本就够了,带多了也没看,想来想去,最终带了侯捷的《深入浅出MFC》(这本书实在淘宝上淘来的D版,买D版是因为考虑到这本书太老了,买了一年多了,一直没有看,想到平时多少还是要用点MFC,并且还要看看ATL,所以还是翻一翻吧),另一本是李开复的自传《世界因你不同》,也是买了好久了一直没有看。(因为好多书买了没看,所以我控制住自己今年下半年只买了新版的0day安全)
《深入浅出MFC》的前面两张基本上没[......]

继续阅读

MFC调用CFileDialog之后目录改变

2011年5月28日 5 条评论

今天在写MFC程序时发现调用CFileDialog之后,再来用相对路径打开程序目录下的文件就不对了,打不开了。后来一调试,发现是程序的路径变成了CFileDialog所选择的路径。
解决方法:在调用CFileDialog的DoModal之前使用GetCurrentDirectory获取程序的目录并且保存下来,然后在DoModal之后嗲用SetCurrentDirectory恢复就可以了。这不会影响到CFileDialog的目录,因为它使用的是绝对路径。

感谢gewala提醒:
在CFileDi[......]

继续阅读

分类: MFC开发 标签: , ,

VS2008为MFC添加UAC控制

2011年5月27日 2 条评论

之前写过一篇博客——《VC/MFC编程弹出UAC窗口》,说的是通过添加一个特殊的资源来给程序添加UAC控制,当时候在VC6下面测试的很好。
今天在VS2008下写MFC,又需要用到这个。突然发现这个方法不灵了。虽然网上还是有一群人说添加资源可以实现,但我就是测试不成功。后来去网上找了很久,发现Visual Studio原来自己就带有这个功能。
打开项目属性,选择“配置属性”–>“连接器”–>“清单文件”–>“UAC执行级别”,将其设置为requireAdminist[......]

继续阅读

分类: MFC开发 标签: ,

error C2440 reinterpret_cast 无法从NMHDR *转换为NMITEMACTIVATE

2011年5月26日 没有评论

错误描述:error C2440: “reinterpret_cast”: 无法从“NMHDR *”转换为“NMITEMACTIVATE”;转换要求构造函数或用户定义的转换运算符,而该运算符不能由 const_cast 或 reinterpret_cast 使用
错误起因:在VS2008中,当为MFC的CListCtrl控件添加NM_RCLICK事件响应时VS自动生成的代码会漏掉一个*号。

void CProjectNameDlg::OnNMRClickListProcess(NMHD[......]

继续阅读

分类: MFC开发 标签: , ,

fatal error C1010 unexpected end of file while looking for precompiled header directive

2011年5月4日 没有评论

fatal error C1010: unexpected end of file while looking for precompiled header directive
这是今天在编译某书上源代码的时候遇到的一个错误,看错误提示就知道是预编译头出了问题。网上找了一下,这个错误的解决方案如下:

  1. 设置”菜单),选择C/C++选项卡,从Category(分类)组合框中选中Precompiled Headers(预编译的头文件),选择Not Using Precompiled headers([......]

继续阅读

分类: MFC开发 标签: , ,

关于VC bin目录下的几个EXE

2011年3月20日 没有评论

BSCMAKE.EXE 生成一个浏览信息文件 (.bsc),该文件包含有关程序中的符号(类、函数、数据、宏和类型)的信息。在开发环境内的浏览窗口中查看此信息。(.bsc 文件也可以在开发环境中生成。)
LIB.EXE 用于创建和管理通用对象文件格式 (COFF) 对象文件库。它还可用于创建导出文件和引用导出定义的导入库。
EDITBIN.EXE 用于修改 COFF 二进制文件。
DUMPBIN.EXE 显示有关 COFF 二进制文件的信息(如符号表)。
NMAKE.EXE 根据MAKEFILE文[......]

继续阅读

分类: MFC开发 标签: , ,

VC/MFC编程弹出UAC窗口

2011年3月17日 没有评论

很多程序能够在XP下正常运行,在Vista普及的时候遇到了各种问题,因为从Vista开始多了一个UAC(User Account Control,用户帐户控制
)不少程序因此而出现各种莫名其妙的错误。后来,人们知道要用管理员身份启动程序。但是仍然有很多用户对这一点不会使,软件开发商总不可能认为每个用户都会去“Run as Administrator”吧。
《Windows核心编程》曾经提及,很多软件开发者喜欢偷懒,在调用需要指明权限的API的时候往往写入XXX_ALL_ACCESS,比如RegO[......]

继续阅读

分类: MFC开发 标签: , , ,

VC6实现XP风格对话框界面

2011年2月16日 2 条评论

VC6下开发应用程序,默认的对话框界面是2000的风格的,也就是所谓的“Windows经典风格”。和XP风格相比,在外观上显然有点逊色,但是应该前者在性能上会更好,这些主题的应用往往都以牺牲速度为代价。这也不难见网吧中的电脑都是Windows经典风格(至少以前是的,现在已经很少去网吧了)。
那么如何让VC6下的程序也来弄个XP风格呢?其实很简单。

  1. 打开你的VC6工程,找到“资源视图”,然后在视图中的树的根结点上点鼠标右键,选择菜单“插入”。
  2. 在弹出的“插入资源”对话框中选择“Custom”,[......]

继续阅读

分类: MFC开发 标签: , ,