MFC
文章平均质量分 65
Gary@Tokyo
努力生活!
爱好:登山、游泳
If you dont aim high, you will never hit high.
展开
-
VC++中播放声音wav
因为只需在Windows上执行,先想到用MCI接口。试了一下,用mciSendCommand可以实现基本的播放wav文件的功能。但循环播放wav就麻烦了,必须向窗口传送MM_MCINOTIFY消息。google了一下,才发现原来有更简单的方法——用sndPlaySound。一条语句sndPlaySound(filename, SND_ASYNC | SND_LOOP)就可以循环播放声音文件,完原创 2012-06-27 14:05:50 · 4365 阅读 · 0 评论 -
错误的结果2......VC/bin/cl.exe返回的最终解决方案
<br />原文:http://blog.csdn.net/mdjtf/archive/2010/05/23/5617292.aspx<br />今日心血来潮,看着臃肿的VC2008生成文件突生不满,试行优化。按照前辈们说的把项目属性都配置一次,报错误的结果2......VC/bin/cl.exe返回。于是反复找,郁闷地发现居然错在第一条的优化上,就是最小化大小、最大化速度那里。但是,难道就不优化了吗?那我还不如去用VC6了。<br />1、进行google,运行环境加了路径,不行。<br />2、转载 2010-08-09 17:34:00 · 7458 阅读 · 3 评论 -
VS2008 fatal error C1902: 程序数据库管理器不匹配;请检查安装
由于之前出现VS2008 : error PRJ0002 : 错误的结果 1,于是从网上下载了一个mspdb80.dll放进Microsoft Visual Studio 8/VC/bin目录,于是出现了fatal error C1902: 程序数据库管理器不匹配;请检查安装于是从VC安装目录下的/Common7/IDE 目录下拷贝这三个文件到 安装目录下的VC/bin下即可Here are steps how I got it and solve: 1. I原创 2010-08-09 17:21:00 · 4097 阅读 · 2 评论 -
预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
<br />当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using i转载 2010-08-09 16:29:00 · 1034 阅读 · 1 评论 -
VC6转VS2008 -ON_WM_TIMER error C2440
<br />CPP文件消息映射中<br /><br />ON_WM_TIMER( )<br /><br /><br />编译时候出现如下错<br />error C2440: 'static_cast' : cannot convert from 'void (__thiscall CDlgConfigEncoder::* )(void)' to 'void (__thiscall CWnd::* )(UINT_PTR)'<br /><br /><br />把对应的timer函数声明改成<br /><b原创 2010-08-05 16:34:00 · 5549 阅读 · 2 评论 -
VC开发多语言界面支持----INI实现
最近在做一个小程序,要求实现对多语言界面显示支持功能,并且,界面显示内容用户能够自己设置。 初步设计用INI文件来配置显示内容,换一种语言的配置文件,就能够更换整个系统的显示语言。考虑到系统规模很小,周期又短,不想用太复杂的方案来解决这个问题,当参考了很多网上类似的设计和代码,发现都不是很满意。 主要问题在于:绝大多数基于INI文件配置这种简单应有实现的代码,都是针对组件ID固定加载,写死了组件的ID号,比如:strCaption = fileManager.GetString(转载 2010-08-04 18:47:00 · 1504 阅读 · 0 评论 -
vs2008定位到上一次的位置和前一位置快捷键
<br />最近用VS2008做开发,这个环境不熟悉,快捷方式不知道,开发比较吗麻烦,找了一些资料过来。<br /> <br /> <br />F12 跟到定义(gotodefine) <br />CTRL+-返回上一次的位置 <br />CTRL+SHIFT+-定位到前一个位置 <br /> <br />调试.全部中断 CTRL + BREAK 临时停止执行调试会话中的所有进程。仅适用于“运行”模式。<br />调试.断点 CTRL + B 显示“断点”对话框,在此可添加和修改断点。<b原创 2010-06-08 17:26:00 · 11499 阅读 · 1 评论 -
VC下发布的Release版程序的异常捕捉
<br />原文地址:http://bilicon.blog.sohu.com/86559158.html<br /> <br />作为程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统造成巨大的损失。但在一个大型系统的测试过程 中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。我们更为关心的是程序中的哪一行导致了系统崩溃,这样我 们才能有针对性的进行改正。<br /> 在VC中,我们可以利用出现程序崩溃时转载 2010-08-02 20:12:00 · 1330 阅读 · 0 评论 -
VC操作Windows快捷方式
简介:这是VC操作Windows快捷方式的详细页面,介绍了和vc,有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处新建和解析主要用到的是COM组件。IShellLink和IPersistFile需要添加的头函数shobjidl.hIPersistFile主要用到两个成员函数:1、Save。保存内容到文件中去2、Load。读取Load的函数原型HRESULT Load( LPCOLSTR pszFileName, //快捷转载 2010-08-16 16:50:00 · 1217 阅读 · 0 评论 -
VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
<br />VC9编译的程序在没有装过VC9(确切的说是.Net Framework3.5)的机器上运行时,如果提示“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”这个错误,那么就说明该程序动态链接了VC9的运行时库,(如果还用到了MFC,那么可能动态链接了VC9的MFC库,同理还有ATL库),以及缺少对应的manifest文件,程序在目标机器上没有找到这些库和配置文件,因此导致了这个错误。出现这种情况的VC9编译器可能存在3个版本,接下来分别阐明:<br />转载 2010-09-26 15:39:00 · 2638 阅读 · 0 评论 -
如何分析堆栈出错的 dmp 文件
原文:http://bbs.kanxue.com/showthread.php?t=51141标 题: 【讨论】如何分析堆栈出错的 dmp 文件作 者: 小喂时 间: 2007-09-05,15:41:07链 接: http://bbs.pediy.com/showthread.php?t=51141如何分析堆栈出错的 dmp 文件分析程序出错生成的 dmp 文件是事后分析的主要工作。第一步往往都是使用 WinDbg 自带的 !analyze -v 命令先进行初步转载 2010-10-09 10:36:00 · 2884 阅读 · 0 评论 -
VC 对话框背景透明
BOOL CCommonDlg::OnInitDialog(){ CDialog::OnInitDialog(); // TODO: Add extra initialization here //VS2003以上版本 SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL原创 2012-06-13 14:53:45 · 3614 阅读 · 0 评论 -
CDHtmlDialog的基本使用
因为我的部门只有我一个人(无奈之极,只有我一个做C++的,其他的都在做C#),所以我去跟技术顾问讨论我们客户端到底该怎么呈现。他说按照以往(上一套系统)的经验,升级很频繁,建议还是使用内嵌 HTML的方式来显示界面,这样以后只要升级HTML就可以了。我听了之后,牙掉了一半,我拖了半个月的对话框就这么给否了,心里着实不是滋味。然后就开始寻找MFC显示HTML页面的方法,找了一些自定义的HTML类转载 2012-05-21 15:08:51 · 18880 阅读 · 9 评论 -
对话框窗口加上阴影效果
参考实例 Bring your frame window a shadowhttp://www.codeproject.com/KB/dialog/FrameShadow.aspx?display=Print原创 2012-06-05 10:01:37 · 4485 阅读 · 1 评论 -
两个经典的windbg调试案例,值得学习。
1. 调试Bug的神兵利器:通过WinDbg条件断点收集Log 原文地址:http://blogs.msdn.com/yizhang/archive/2009/03/30/bug-windbg-log.aspx调试Bug的神兵利器:通过WinDbg条件断点收集Log 前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug。这个Bug是C# Team那边发现的,他们的Testcas转载 2011-12-12 17:57:08 · 4411 阅读 · 0 评论 -
Visual Studio 2008 中的可执行文件中嵌入清单文件(manifest) Vista/win7 UAC中把应用程序标注为“需要管理员权限”
由于需要提升应用程序的权限,所以找了一些文章之前看到一些参考Vista UAC中把应用程序标注为“需要管理员权限”的四种方法 http://www.cnblogs.com/taoxu0903/archive/2007/09/07/885588.html如何在 Visual Studio 2005 中可执行文件中嵌入清单文件http://support.microsoft.原创 2011-11-07 17:30:44 · 3332 阅读 · 0 评论 -
慎用USES_CONVERSION
<br />USES_CONVERSION是ATL中的一个宏定义。用于编码转换(用的比较多的是CString向LPCWSTR转换)。在ATL下使用要包含头文件#include"atlconv.h"<br />使用USES_CONVERSION一定要小心,它们从堆栈上分配内存,直到调用它的函数返回,该内存不会被释放。如果在一个循环中,这个宏被反复调用几万次,将不可避免的产生stackoverflow。<br />解决方法是:将用到该宏的语句独立封装成一个函数,这样就可以无限次调用了。<br /转载 2011-01-20 13:47:00 · 1503 阅读 · 0 评论 -
使用windbg分析dmp文件定位程序bug
<br />本文编写了一个简单能产生除数为0异常的程序,让其运行,产生崩溃,通过drwtsn产生dmp文件,然后通过windbg分析dmp文件,定位程序bug。<br /><br />目的:学习windbg基本功能使用。<br /><br />程序源代码:<br />void Crash(void)<br />{<br /> int i = 1;<br /> int j = 0;<br /> i /= j;<br /><br />转载 2010-10-09 11:05:00 · 5758 阅读 · 0 评论 -
WinDbg配置与下载
WinDbg配置和使用基础 WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。1. WinDbg介绍:<br />Debugging Tools and Symbols: Getting Started<br />http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx<br />A word for WinDbg<br /转载 2010-10-09 09:56:00 · 17396 阅读 · 1 评论 -
CString/C++ string常用操作详解
<br />之 所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。<br /> 好了,进入正题………<br />首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下转载 2010-06-04 13:28:00 · 10601 阅读 · 0 评论 -
error C2065: ''W2T'' : undeclared identifie
在头文件中加上#include原创 2010-06-04 09:45:00 · 2380 阅读 · 0 评论 -
VS2008 中 ATL CLR MFC Win32 区别
<br />ATL用于编写COM程序,CLR是.NET的公共语言运行库,MFC是指MFC类库,MFC程序是用这些类库做出的程序,WIN32常规就是不用MFC,使用API函数编的程序。MFC、ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用。当然关于C++开发的库不止这3个,不过这3个是微软推荐。从编程所处层次而言,WIN32为最底层,其次是MFC.然后是CLR.WIN32 winAPI MFC MFC类库 CLR .net库<br /><br />1转载 2010-06-03 10:58:00 · 2626 阅读 · 1 评论 -
VS2008 制作安装包
VS2008制作安装包一:建立项目打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定.二:导入程序文件在项目的 文件系统 视图下 双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来. 三:设置项目属性设置项目运行在那个框架下 切换到转载 2010-05-06 10:13:00 · 3622 阅读 · 0 评论 -
在 VC6 中使用 GdiPlus-安装
安装三部曲:Step1:下载 GdiPlus SDK 文件包;链接地址1:http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip链接地址2:http://www.codersource.net/samples/mfcgdiplus.zipStep2:安装;(1)头(GdiPlus*.h)文件安装转载 2010-04-29 11:12:00 · 4183 阅读 · 0 评论 -
微软VC各版本BUG: error C2660: 'new' : function does not take 3 parameters[转]
今天在用GDI+写程序时,有HatchBrush * brushDotDiamond = new HatchBrush(HatchStyle25Percent,color);用VC6 SP6或VS2005编译错误为error C2660: new : function does not take 3 parameters这是VC的一个BUG,转载 2010-04-29 11:50:00 · 1913 阅读 · 0 评论 -
在VC 中使用GDI+[转]
请问怎样在VC6中使用GDI+,很急!! 请说明要用到什么库文件,头文件,谢谢!在 头文件 stdafx.h 添加如下的代码#define ULONG_PTR unsigned long#include using namespace Gdiplus;在 CWinApp 派生出来的 你自己的 C×App 的头文件 添加ULONG_PTRgdi原创 2010-04-29 11:31:00 · 1492 阅读 · 0 评论 -
在JavaScript 调用C++
方案一: // html & JavaScript... <button value="Click me" onclick="window.navigate(app:command&arg1=1&arg2=2)" /> ... // C++: 响应 的消息函数OnBeforeNavigat2转载 2010-04-28 13:28:00 · 4337 阅读 · 0 评论 -
vc中定时器的使用
在编程时,会经常使用到定时器。使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数。1.1 用WM_TIMER来设置定时器先请看SetTimer这个API函数的原型 UINT_PTR SetTimer( HWND hWnd,转载 2010-04-22 12:48:00 · 710 阅读 · 0 评论 -
VC++ MFC Tutorial: CListCtrl, InsertItem, Using List Control, SetImageList, Article with source code.
暂且先记录,等有空时候翻译 Everything you need to know about using the standard list control in your applications 源码下载Intr原创 2010-04-20 14:58:00 · 4407 阅读 · 1 评论 -
VS2008 使用小技巧 提高编程效率
1. 怎样调整代码排版的格式?选择:编辑—>高级—>设置文档的格式 或 编辑—>高级—>设置选中代码的格式。格式化cs代码:Ctrl+k+f 格式化aspx代码:Ctrl+k+d2. 怎样跳转到指定的某一行?两种方法:Ⅰ. Ctrl+G Ⅱ. 单击状态栏中的行号3. 怎样创建矩形选区?两种方法转载 2010-04-15 09:32:00 · 824 阅读 · 0 评论 -
图解Vs2008下打包安装程序
1、怎么使得程序窗口左上角和任务栏有图标,如下图所示: 其实这个问题不应该放到程序打包这部分讲,只不过对于一些初学者而言,在这提下也许会有很大的帮助(想到自己刚学.net那会了,呵呵)。方法之一的话就是先添加一个图标文件到项目中,然后切换到每个界面设计器,右键窗体的属性,在属性窗口有个Icon选项,下面的转载 2010-05-06 10:33:00 · 6416 阅读 · 0 评论 -
vs2008制作安装部署时如何包含.Net FrameWork 3.5 SP1
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://lonelyfishor.blogbus.com/logs/42008895.htmlVS2008制作的Web项目在安装部署时需要.Net Framework 3.5 SP1的支持,可默认情况下打包的时候系统无法找到sp1的安装包,从微软网站找到了如下方法,与大家分享一下吧:如果在安装项目转载 2010-05-06 10:11:00 · 2199 阅读 · 0 评论 -
C++中extern “C”含义深层探索
<br />1.引言<br /><br /> C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。<br /> 2.从标准头文件说起<br /><br转载 2010-07-05 12:16:00 · 816 阅读 · 0 评论 -
VC删除文件夹(非空目录)及其中所有文件
<br /> <br />BOOL CIOCPServer::DeleteDirectory(char* psDirName) { CFileFind tempFind; char sTempFileFind[ _MAX_PATH ] = { 0 }; sprintf(sTempFileFind,"%s//*.*",psDirName); BOOL IsFinded = tempFind.FindFile(sTempFileFind); whi原创 2010-07-21 10:28:00 · 18830 阅读 · 0 评论 -
CFile::GetFileName与CFile::GetFileTitle导致软件的错误
前几天软件完成后进入测试,在测试机器上发现socket传送的一个文件总是不能保存正确的文件格式,但是在我的机器却又没有问题。没有办法,跟着流程走一遍,一点一点加log,终于发现是CFile中GetFileName与GetFileTitle导致的问题。原因如下:我的机器中是不隐藏文件扩展名,测试的机器是隐藏机器扩展名的。GetFileName与GetFileTit原创 2010-05-24 10:40:00 · 2186 阅读 · 0 评论 -
通过异步程序调用(APC)实现的定时功能 CreateWaitableTimer和SetWaitableTimer函数
定时器是一个在特定时间或者规则间隔被激发的内核对象。结合定时器的异步程序调用可以允许回调函数在任何定时器被激发的时候执行。本文的例子代码显示了如何实现。 使用本定时器时,你需要把常量_WIN32_WINNT定义为0x0400,并且此常量应该在包之前定义,以确保声明合适的定时器原型函数。 通过调用CreateWaitableTimer()可以创建一个定时器,此函数返回一个指向内核对象的句柄。若定时器已经存在,你可以通过使用OpenWaitableTimer()获得一个进程相关的转载 2010-07-12 12:52:00 · 1625 阅读 · 0 评论 -
MFC 中添加自定义消息的响应 (BEGIN_MESSAGE_MAP ON_MESSAGE)
<br />BEGIN_MESSAGE_MAP 把消息和函数指针联系起来<br />1首先要在窗口类的cpp文件手动添加消息响应机制,<br /><br />ON_MESSAGE(ID,Handler) // 消息映射<br />LRESULT Handler(WPARAM,LPARAM);//响应的函数<br /> <br /> <br />BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)<br />//{{AFX_MSG_MAP(CXXXDlg)<br />//自定义原创 2010-07-12 11:25:00 · 8748 阅读 · 0 评论 -
warning c4273: inconsistent dll linkage
编译时候,在release版本下发现以下警告,看到警告总是不舒服的,于是在网上搜索,解决方案: warning C4273: 'DownloadGameFile' : inconsistent dll linkage. dllexport assumed.: warning C4273: 'StopDownload' : inconsistent dll linkage. dllexport assumed.源代码涉及的地方如下:#ifdef DOWNLOAD_EXPORTS#define DO原创 2010-07-12 15:05:00 · 4632 阅读 · 1 评论 -
error LNK2005的解决
今天在VC6下编译软件时,已编译通过,链接时报一下错误:Linking...libc.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSVCRTD.dll)libc.lib(crt0dat.obj) : error LNK2005: __exit already defined in原创 2010-05-11 18:03:00 · 2667 阅读 · 3 评论 -
warning C4273 And LNK4049:
<br />//DownNet.h#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#ifdef DOWNNET_DLL#pragma message (" export DownNet ")#define DownAPI __declspec(dllexport)#else#pragma message (" import DownNet ")#define DownAPI __declspec(dl原创 2010-07-05 11:52:00 · 2466 阅读 · 0 评论