人较笨且记性不好,故记录在此.折叠代码打不开请F5.本博中很多是转载收录其他网友的文章(原文地址请见博文末尾),所有权为原作者所有!!!
此博客已不再更新和维护,欢迎关注我的github新博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

2011年8月30日

摘要: string::c_str的介绍: c_str函数的返回值是const char*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程。 c++语言提供了两种字符串实现,其中较原始的一种只是字符串的c语言实现。与C语言的其他部分一样,它在c++的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。 标准头文件<cstring>包含操作c-串的函数库。这些库函数表达了我们希望使用的几乎每种字符串操作。 当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为 阅读全文
posted @ 2011-08-30 18:11 子坞 阅读(4390) 评论(0) 推荐(1) 编辑

2011年8月16日

摘要: 说明:第1、2点中所说的文件是除了代码文件和库文件的其他文件;第3点是特指.dll等动态指定的文件;第4点是说的头文件和库文件;正文:1、在VC里进行调试或者执行的工作目录(工作目录指在程序文件夹下工作,比如playSound(“OK.mp3”)这样写就是在程序所在文件夹下找OK文件)默认是项目文件(test.vcproj)所在的目录,所以如果要直接写外部文件名字来找文件,那请把那个文件放到该目录下。如果在那个工作目录下有个文件夹res,里面有个文件nice.bmp,则在程序里面是("res/nice.bmp"),不能直接写(“nice.bmp”)。(刚才是指默认工作目录, 阅读全文
posted @ 2011-08-16 11:53 子坞 阅读(999) 评论(0) 推荐(0) 编辑

2011年8月10日

摘要: 由于库文件不能单独执行,因而在按下F5(开始debug模式执行)或CTRL+F5(运行)执行时,其弹出对话框,要求用户输入可执行文件的路径来启动库函数的执行。这个时候我们输入要调用该库的EXE文件的路径就可以对库进行调试了,其调试技巧与一般应用工程的调试一样。 通常有比上述做法更好的调试途径,那就是将库工程和应用工程(调用库的工程)放置在同一VC工作区,只对应用工程进行调试,在应用工程调用库中函数的语句处设置断点,执行后按下F11,这样就单步进入了库中的函数。 上述调试方法对静态链接库和动态链接库而言是一致的。 动态链接库中的导出接口可以使用Visual C++的Depends工具进行查... 阅读全文
posted @ 2011-08-10 22:01 子坞 阅读(285) 评论(0) 推荐(0) 编辑

摘要: 今天用VC开发的时候,新建两个类后,发现没有要类视图那里显示,在文件那里也没看到,于是就想自己手动把这两个类加到工程中去,没想到一点添加文件就发生内存读写错误。开始以为是软件出错了,重启软件后,还是一样,接着发现连从VC 的“文件”-》的“打开”也没办法打开文件了,一样报内存读写错误。郁闷了半天,觉得可能是中毒了吧,开始找软件杀毒,弄来弄去还是出现同样的错误。 于是在网上找资料,找了很久终于让我找到了,原来是VC6.0和Visio两个软件(也可能是office 2010)有冲突,真是汗啊,都是微软的东西,居然有冲突,把Visio卸载掉,问题完全解决。我实在是想不明白,自家的软件在自家的平... 阅读全文
posted @ 2011-08-10 21:26 子坞 阅读(5082) 评论(0) 推荐(0) 编辑

摘要: 【参考资料 感谢作者】1、使用TinyXml库如何创建和打印xml文件http://www.cnblogs.com/clever101/archive/2010/04/05/1704876.html2、使用tinyxml库获取xml文件声明,查询指定节点、删除指定节点http://www.cnblogs.com/clever101/archive/2010/04/06/1705798.html3、使用tinyxml库修改指定节点和增加节点及属性http://www.cnblogs.com/clever101/archive/2010/04/08/1707812.html4、修改节点属性值函数M 阅读全文
posted @ 2011-08-10 12:11 子坞 阅读(864) 评论(0) 推荐(0) 编辑

2011年8月9日

摘要: 1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上。再在对话框类中,声明一个CTabCtrl变量:CTabCtrl m_tab;变量m_tab用来与对话框中的Tab Control控件交互,为此要在DoDataExchange函数中加入DDX_Control语句:DDX_Control(pDX, IDC_TAB1, m_tab);IDC_TAB1是Tab Control控件的ID。2.建立两个对话框程序,用来当做Tab Control控件的两个页。别忘了把Style改为Child,Border改为None。然后就可以在上面加其他控件了。接着 阅读全文
posted @ 2011-08-09 19:40 子坞 阅读(2854) 评论(0) 推荐(0) 编辑

2011年8月8日

摘要: 关于回调函数的作用,请参考http://www.cnblogs.com/ziwuge/archive/2011/07/06/2098764.html这些天在练习的时候,很多在win32控制台里了回调函数。再次基础上移植到VC/MFC中的时候发现有点问题,于是查阅资料,解决方法如下(直接代码):不过我在查阅资料的时候,看见有的朋友说回调函数需要被定义为CALLBACK(这是一个宏),遗憾我不知道具体怎么用。typedef void (*cback)(int a,LPVOID userParam); //回调函数原型定义public: afx_msg void OnBnClickedButton1 阅读全文
posted @ 2011-08-08 18:05 子坞 阅读(7298) 评论(1) 推荐(0) 编辑

2011年7月28日

摘要: Visio技巧总结:1、Visio画图时,两根直线交叉时,总是默认会出现一个跨线的标志,很是不爽,去除方法:选中线条,然后菜单的格式->行为->连接线->跨线->添加->从不,即可。2、增加连接点。在连接线的按钮旁边有下拉按钮,选择那个叉叉符号,就是连接点的命令了,选中需要增加的框图,按住ctrl+左键,就可以增加连接点了。3、连接线与对象的吸附。为了方便后期的修改调整,连接线一定要与它连接的对象吸附在一起,否则后期调整时你就等着哭去吧!吸附操作很简单,只需要用鼠标左键拖动连接线至要吸附的对象,看到有个呈辐射状的红点轻轻一闪,就表明连接线与对象成功吸附在一起了,再 阅读全文
posted @ 2011-07-28 23:46 子坞 阅读(4558) 评论(0) 推荐(0) 编辑

摘要: 这是WinPcap的NPF驱动核心指南原文的翻译,英语水平有限,翻译得可能不是很准确。这个章节说明网络组包过滤(NPF)组件-WinPcap的核心部分。一般用户可能只对WinPcap的使用感兴趣,但不一定想了解它的组件结构。因此这些信息只要是提供给WinPcap的开发者和维护者,或是对驱动是如何运行有兴趣的人所参考。尤其是,对操作系统、网络和Win32核心编程、设备驱动开发比较熟悉的话对于阅读这个章节比较有帮助。NPF作为WinPcap组件的一部分,它向用户层提供了处理在网络上传输的数据包,对数据包进行捕获,发送和分析的能力。下面的段落将会阐述NPF同操作系统和它的基本结构的相互配合。一、NP 阅读全文
posted @ 2011-07-28 23:05 子坞 阅读(2221) 评论(7) 推荐(0) 编辑

摘要: DDK中自带的例子:C:\WINDDK\2600\src\network\ndis\passthru有些朋友通过建立工程(如vc)在此基础上扩展了passthru的功能,但是在我电脑上编译报错:--------------------Configuration: passthru_ex - Win32 Debug--------------------系统找不到指定的路径。Error executing c:\windows\system32\cmd.exe.passthru.sys - 1 error(s), 0 warning(s)我请教导师,他说是环境变量设置有问题,叫自己查。有了此思路 阅读全文
posted @ 2011-07-28 12:50 子坞 阅读(1702) 评论(0) 推荐(0) 编辑

2011年7月27日

摘要: 前视缓冲区:lookaheadbuffer这个缓冲区是给协议一段Packet的内容,让协议来决定是否接受这个报文。考虑数据包的接收,如果我们只需要看见数据内容的前几个字节(如TCP头)就可以决定这个包是否是本协议所需要处理的,那么显然下层驱动就没有必要提交整个数据包,只提供一个包开始的几个字节就可以了。这个是有Miniport驱动来决定究竟那个lookaheadbuffer的大小的,这个缓冲区是从报文的 ip头开始的一段缓冲区,也有可能是包含了整个的 ip报文,这个时候lookaheadbuffersize=packesize了。如下面的代码:if (LookaheadBufferSize ! 阅读全文
posted @ 2011-07-27 17:39 子坞 阅读(836) 评论(0) 推荐(0) 编辑

2011年7月26日

摘要: 这几天对NDIS的学习,基本思路是:首先熟悉理论知识→然后下载一个例子进行研究→最后例子自己模仿扩展→最最后尝试自己写一个新的。Passthru是微软NDIS自己写的一个框架驱动,NDIS开发者可以在此框架上进行扩展,做二次开发。NDIS提供一些基本操作函数,Passthru里的函数就是使用的这些基本函数做成的一个网络驱动。基于Passthru的扩展就是自己在此驱动的基础上在封装一次,比如说为MyPassthru,将NDIS里面的函数封装在自己自定义函数里,方便外界调用。最主要的函数就是NDIS里面的PtReceive或PtReceivePacket(负责网络封包的接收) ,MPSend或MP 阅读全文
posted @ 2011-07-26 10:32 子坞 阅读(3772) 评论(2) 推荐(0) 编辑

2011年7月23日

摘要: 今天用DriverStudio向导生成一个基于NDIS的驱动程序,在开始编译的时候出现“ntstrsafe.lib”打不开,再然后出现“kndis5mp.lib”。解决办法:1、ntstrsafe.libdriverstudio产生的驱动工程都会要连接ntstrsafe.lib这个库,但实际上这个库并不存在,在Project的Settings里的Link项中去掉这个库,然后在工程中的sources文件里边,找到下面一行:TARGETLIBS=$(DDK_LIB_PATH)/ntstrsafe.lib $(DDK_LIB_PATH)/csq.lib,直接删除即可。有时候还会提示没有ntstrsa 阅读全文
posted @ 2011-07-23 23:27 子坞 阅读(1559) 评论(0) 推荐(0) 编辑

2011年7月19日

摘要: 在某一个线程中访问控件,或对控件进行操作的时候,如调用SetWindowText,当窗口关闭时,有可能产生一个错误.原因在于:窗口关闭时,控件先销毁,然后在销毁线程,当控件销毁时,若线程继续访问控件的话,则会出错.另可能是由于,线程访问控件是没有获取到控件的句柄,直接对控件操作,如列表框m_listctrl.AddString("你好"),这的时候在线程里隐藏this指针没有包含列表框的句柄,对列... 阅读全文
posted @ 2011-07-19 18:26 子坞 阅读(281) 评论(0) 推荐(0) 编辑

2011年7月18日

摘要: 函数功能:该函数把一个消息发送给指定的对话框中的控件。 函数原型:LONG SendDlgItemMessage( HWND hDlg, // handle of dialog box int nIDDlgItem, // identifier of control UINT Msg, // message to send WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ); 参数: hDlg:指定含有控件的对话框。 nIDDigItem:指定接收消息的控... 阅读全文
posted @ 2011-07-18 12:13 子坞 阅读(2749) 评论(0) 推荐(1) 编辑