一个在IT行业摸爬滚打的老司机
遇到一未找到必然出现条件的崩溃,不知道什么时候能触发崩溃,崩溃dump显示,试图访问了非法的内存或者写入了非法的内存 此时如下两个函数就比较有用了: [cpp] view plaincopy BOOL WINAPI IsBadReadPtr( ...
判断调用进程是否拥有对指定字符串指针的读取权限,函数原型如下: BOOL IsBadStringPtr( LPCTSTR lpsz, UINT_PTR ucchMax); 参数: lpsz: 输入参数,指向字符串。
1、有关IPicture加载图片后直接Render到内存DC的问题(HBITMAP转换IPicture)Picture的方法get_Handle可以直接得到图片的句柄 IPicture *pIPicture;HBITMAP hBitmap;.
使用windows的的自带的函数来显示图像可能始终还是绕不开两个概念, 视口和窗口。 视口--- 屏幕上的一个显示用的矩形框。 窗口--- 完整图像上的一个用于取数的矩形框。 屏幕的宽度、高度和视口参数用于控制向显示存储器中写数。
感谢博主 http://book.51cto.com/art/200711/59731.htm 《Windows用户态程序高效排错》第二章主要介绍用户态调试相关的知识和工具。本文主要讲了排错的工具:调试器Windbg。
感谢博主 http://book.51cto.com/art/200711/59874.htm 2.2 读懂机器的语言:汇编,CPU执行指令的最小单元2.2.1 需要用汇编来排错的常见情况 汇编是CPU执行指令的最小单元。
习惯了Vsiual Studio的兄弟们可能会因为先入为主的原因以为所有的调试器都应该像它那样,其实不然,当你安装Debugging Tools for Windows的时候,你将发现有两个系列的工具,一系列32位的工具和一系列64位的工具。
Win32堆的调试支持 为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试。 1:堆尾检查(Heap Tail Check) HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出。
必先利其器之一:使用PageHeap.EXE或GFlags.EXE检查内存越界错误 Article last modified on 2002-6-3 ---------------------------------------------------------------- Th...
《Windows用户态程序高效排错》第二章主要介绍用户态调试相关的知识和工具。本文主要讲了PageHeap,调试Heap问题的工具. AD:51CTO学院:IT精品课程在线看! 2.4.2 PageHeap,调试Heap问题的工具 幸运的是,Heap Manager的确提供了主动检查错误的功能。
DirectShow 提供了用应用程序从适当的硬件中捕捉和预览音/视频的能力。数据源包括:VCR,camera,TV tuner,microphone,或其他的数据源。一个应用程序可以立刻显示捕捉的数据(预览),或是保存到一个文件中。
一、前言 在前一段时间,我遭遇了一个现象诡异的Bug,最后原因归结为在DllMain里错误地调用了FreeLibrary(在本文最后对此Bug有详细的解释)。 MSDN里关于禁止在DllMain里调用LoadLibrary和FreeLibrary的解释过于含糊不清,所以我重温了一遍RussOsterlund的"Windows 2000 Loader"一文,并仔细阅读了泄漏的Win2000源代码的相关部分。
有没有碰到过程序启动就因为异常直接crash?有没有碰到程序启动之后什么反应也没有?有没有碰到过程序启动之后去触发另一个进程失败?有没有碰到别人的程序调用了你的代码,出现问题以后,让你来调查,而你只有你的源代码,该怎么办? 碰过这样的问题,应该都会很头疼吧,如何诊断问题呢?最简单的当然是Debug吧,可是当程序没有启动的时候,我们不能Attach to process...因为进程还不存在。
接收邮件的,暂时没搞定,不过在SF上找到了这个发送邮件的库文件.它提供了一个比较完整的类,可以简单的调用发送邮件.下面是作者提供的一个例子,不过由于连SMTP发邮件需要密码,所以代码我改了一下.// This file is part of the jwSMTP library.
Microsoft的针对与设备无关位图(DIB位图),在其WIN32 SDK的Multimedia中提供了一组绘制DIB位图的高性能函数组──DrawDib函数组。DrawDib函数组是一组不依赖于图形设备接口(GDI)函数,而直接操作显存的函数组。
实现程序全屏幕显示的思路有很多种,最常见的一种就是: 1)利用Windows API提供的一个结构体WINDOWPLACEMENT来存储全屏显示前视图和主框架窗口在屏幕上的位置和显示信息、非客户区窗口的显隐信息,以便全屏幕显示时恢复窗口原状; 2)通过API函数GetDesktopWin...
本文介绍如何在VC资源文件中加入自己的声音资源,使自己的应用程序可以播放声音。 1、首先用文本编辑器(如记事本)打开资源文件(.rc文件) 在最后加入自己的声音资源,如下IDW WAVE "c:\\kav\\sound\\virus.wav" 保存资源文件。
我们在进行程序的界面设计时,常常希望将位图的关键部分,也既是图像的前景显示在界面上,而将位图的背景隐藏起来,将位图与界面很自然的融合在一起,本文介绍了透明位图的制作知识,并将透明位图在一个对话框中显示了出来。
摘 要:本文提供了四种启动画面制作方法。 使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序);二是 可以用来显示软件名称和版权等提示信息。怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法。
菜单控制为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 需要将CFrameWnd:: m_bAutomenuEnable设置为FALSE,如果该数据成员为TRUE(缺省值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项。
作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃! “该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见到的东西了。
1.修改主窗口风格 AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名、窗口是叠加型的、可改变窗口大小等。要修改窗口的缺省风格,需要重载CWnd::PreCreateWindow(CREATESTRUCT& cs)函数,并在其中修改CREATESTRUCT型参数cs。
1.图标透明 (1).Windows中的图标其实是有两个图像组成的,其中一个用于与它要显示的位置的图像做“AND”操作,另一个作“XOR”操作。 透明:用“白色”AND,用“黑色”XOR 反色:用“白色”AND,用“白色”XOR 正常色:用“黑色”AND,用正常颜色XOR.
1.如何得到视图指针 [问题提出] 现在你有一个多线程的Demo,你想在多线程里处理视图指针里的函数,我们给这个函数起个名字:Put();该如何实现呢? //有两种方法可以实现你的要求: //1)第一种方法: //要是多线程不是在App.
1.修改打印预览的ToolBar 为AFX_IDD_PREVIEW_TOOLBAR这个ID创建一个DialogBar。则系统就会用新创建的DialogBar代替系统默认的那个 2.关于打印 1.要打印哪个视就 ((CMainFrame*)AfxGetMainWnd())->m_wndSplitter.
1.删除文件夹 // 删除文件夹及其所有内容void CBaseDoc::RemoveFolder(const CString &strPathName){ CString path = strPathName; if (path.
1.用鼠标移动基于对话框的无标题栏程序的简单方法 void CVCTestDlg::OnLButtonDown(UINT nFlags, CPoint point) { //一句话解决问题 SendMessage(WM_SYSCOMMAND,0xF012,0); CDialog::OnLButtonDown(nFlags, point);} 2.对话框消息映射 有对话框A,B从A中发消息给B然后B处理。
1.用鼠标移动基于对话框的无标题栏程序的简单方法 void CVCTestDlg::OnLButtonDown(UINT nFlags, CPoint point) { //一句话解决问题 SendMessage(WM_SYSCOMMAND,0xF012,0); CDialog::OnLButtonDown(nFlags, point);} 2.对话框消息映射 有对话框A,B从A中发消息给B然后B处理。
1.如何在TreeList中加图标? [问题提出] 请问treeview控件和treectrl控件的用法有何不同呢?向如何imagelist控件中加图象呀? [解决方法] 1) HICON hicon[8]; m_imageList.
1.设置滚动条的滚动大小 创建一个基于CScrollview的SDI Project(在第6步中选CScrollview) 若你已创建了,这步可以省略。 然后: 改为如 void CTestView::OnInitialUpdate() { CScrollView::OnInitialUpdate...
1.资源种创建的控件,对其属性的动态控制: 在对话框类的头文件里创建所要改变属性的控件的对象,如要改变一个Button(其ID为IDC_MyButton)的属性,则需创建Cbutton的对象m_button。
1.如何让对话框中的编辑框接收对话框的消息 ////////////////////////////////////////////////// 如何让对话框中的CEdit控件类接收对话框的消息////////////////////////////////////////////////1、在对话框中增加一个ID 为IDC_EDIT1的CEdit1控件2、通过ClassWizard 生成一个基于CEdit的新类CMyEdit,CMyEdit m_wndEdit;3、在对话框OnInitDialog()中,将m_wndEdit子类化,使其能够接受对话框的消息。
1.如何正确的得到ComBox的指针 CComboBox *mComb = (CComboBox*)GetDlgItem(IDC_DuanCB); CComboBox *mComb = (CComboBox*)::GetDlgItem(m_hWnd,IDC_DuanCB); 2.
1.列表框中标题栏(Column)的添加 创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report、Align项里选择Top、Sort项里选择None.
1.工具条和状态条中控件的添加: 方法⑴.只能在ToolBar里创建控件:首先,在ToolBar中创建一个Button,其ID为ID_TOOL_COMBO(我们要将创建的控件放在该Button的位置上).
1.窗口最大最小化按纽的控制 ①怎样在程序开始的时候让它最大化? ②vc++做出来的exe文件在窗体的右上方是没有最大化和最小化按钮的,怎样实现这一功能? ③如何在显示窗口时,使最大化按钮变灰? ①在App类里的C…App::InitInstance()中把m_pMainWnd->Sh...
1.属性页的添加: 创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch;最后,在.
有时,花上几个小时阅读、调试、跟踪优秀的源码程序,能够更快地掌握某些技术关键点和精髓。当然,前提是对这些技术大致上有一个了解。 我通过几个采用 CSocket 类编写并基于 Client/Server (客户端 / 服务端)的网络聊天和传输文件的程序 ( 详见: 源代码参考 ) ,在调试这些程序的过程中,追踪深入至 CSocket 类核心源码 Sockcore.cpp , 对于CSocket 类的运行机制可谓是一览无遗,并且对于阻塞和非阻塞方式下的 socket 程序的编写也是稍有体会。
中国人自古就有自右至左、从上到下书写汉字的习惯。而当我们在自己所编写的应用程序中使用输出函数输出的总是自左至右的横排文字。有没有可能在我们的应用程序中实现竖写汉字的效果呢?笔者偶然发现了一种利用VC实现竖写汉字效果的方法,现在就把它介绍给大家。
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.
原帖及讨论:http://bbs.bccn.net/thread-211413-1-1.html 效果描述:鼠标点击并拖动某一结点可以把它以动到其他结点下。原理:把一个结点机器下面的所有结点在需要释放的位置拷贝,释放后再把原来位置的结点删掉,结点拖动主要用到三个系统消息。
---- 笔者曾在《软件报》2000年第5期中讨论过如何改变控件的颜色,但还有相当一部分的读者来信提问:一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对于这个问题,其实可以由几种不同的方法来实现,具体如下(粗斜体代码为增添的): ---- 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。
什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37) (1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。
1、#include指令 包含指定的文件 2、#define指令 预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了 3、#typedef指令 常用来定义一个标识符及关键字的别名它是语言编译过程的一部分,但它并不实际分配内存空间。
MFC的消息循环(::GetMessage,::PeekMessage)消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情 分两个步骤完成: 1 “消息派送”:非对话框程序(MFC Doc/View架构)和对话框程序略有不同,但原理相差不大。
锐化(sharpening)和平滑恰恰相反,它是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波(high passfilter)。锐化处理在增强图象边缘的同时增加了图象的噪声。 常用的锐化模板是拉普拉斯(Laplacian)模板(见(3.4)式),又是个数学家的名字,可见学好数学,走遍天下都不怕。
假设放大因子为ratio,(为了避免新图过大或过小,我们在程序中限制0.25≤ratio≤4),缩放(zoom)的变换矩阵很简单: (2.13) 缩放变换的源代码如下,因为和转置的那段程序很类似,程序中的注释就简单一些。
以下文字内容copy于,code为自己实现,是win32控制台程序。 镜象(mirror)分水平镜象和垂直镜象两种。图2.2的水平镜象和垂直镜象分别如图2.13和图2.14所示 图2.13 图2.2的水平镜象 图2.14 图2.2的垂直镜象 镜象的变换矩阵很简单。
转置(transpose)是指将x,y坐标对换,图2.2的转置如图2.15所示。 图2.2 图2.15 图2.2的转置 要注意的是,转置和旋转900是有区别的,不信你可以试试:怎么旋转,图2.2也转不出图2.15来。
以下文本内容来自http://zhidao.baidu.com/question/152910968.html中的部分内容 把RGB值转换为灰度值的公式:Gray := Trunc(0.3 * Red + 0.