随笔分类 -  VC++/MFC

Windows路径操作API函数学习
摘要:前言 在VC++开发过程中,经常需要用到一些路径操作,比如拼需要的文件路径,搜索路径中的内容等等。Windows提供了一套关于路径操作的API帮助我们更好的执行这些操作。 路径截断与合并API PathRemoveArgs 去除路径后面的参数 PathRemoveBackslash* 去除路径最后的 阅读全文

posted @ 2017-03-30 10:57 我来乔23 阅读(5217) 评论(0) 推荐(1)

VC++ :实现简单的文件拖放(Drag and Drop)功能
摘要:1) VC++ 6.0 新建一个基于对话框的MFC的工程,取名MfcDropFiles; 2) 去除默认的控件,包括确定/取消按钮,以及一个静态文本; 3) 在对话框空白区域拖放一个ListBox控件,ID为ID_LIST_FILE,设置属性Accept files; 4)为MfcDropFiles 阅读全文

posted @ 2017-03-17 16:35 我来乔23 阅读(2658) 评论(0) 推荐(0)

VC++ :传统剪贴板的延迟提交技术
摘要:传统剪贴板存在的局限 传统剪贴板有一个局限性:剪贴板上的所有数据都要保存在内存上。 对于文本字符串和其它简单数据类型,可以快速有效地传递。但是,对于比较大的数据,清空剪贴板之前,数据都要占用较大的内存。而如果没有人粘贴这个位图,给它分配的内存就毫无用处。 延迟提交技术 为了避免这种浪费,Window 阅读全文

posted @ 2017-03-15 10:18 我来乔23 阅读(1558) 评论(1) 推荐(0)

VC++ : VS2008 使用ATL开发COM组件
摘要:新建ATL Project,工程名命名为MyAtlCom; 出现工程 向导,一路“Next”; Add class,点击添加 ATL Simple Object , 类名CStatistic, 接口IStatistic,“Next”到底; 打开类视图,可以看到ATLCOM下新增了CStatistic 阅读全文

posted @ 2017-03-13 18:03 我来乔23 阅读(4812) 评论(0) 推荐(0)

关于MFC中的OnPaint和OnDraw
摘要:当窗口发生改变后,会产生无效区域,这个无效的区域需要重画。 一般Windows会发送两个消息WM_PAINT(通知客户区 有变化)和WM_NCPAINT(通知非客户区有变化)。 非客户区的重画系统自己搞定了,而客户区的重画需要我们自己来完成。这就需要OnDraw()或 OnPaint()来重画窗口。 阅读全文

posted @ 2017-03-12 14:08 我来乔23 阅读(4551) 评论(0) 推荐(0)

Windows绘图中的GDI映射模式
摘要:对Windows编程新手来说,GDI编程中最困难的部分就是映射模式(Mapping Mode)。 什么是映射模式? 我们知道,GDI画图是在设备描述表这个逻辑意义上的显示平面上进行,其使用的是逻辑坐标,简单地说,映射模式就是设备描述表的属性,用于确定从逻辑坐标到设备坐标值的转换方式。 Windows 阅读全文

posted @ 2017-03-12 11:45 我来乔23 阅读(1589) 评论(0) 推荐(0)

VC++:Debug出错,提示错误在findfile.cpp (Line 369)
摘要:调试程序的Debug版本,出现断言框,定位于库文件findfile.cpp 第369行: 原程序: 修改后: 正确的调用的次序应该是:FindFile,FindNextFile,GetFileName/GetRoot 扩展:BOOL CFileFind::FindNextFile 以下是MSDN中对 阅读全文

posted @ 2017-03-09 18:37 我来乔23 阅读(746) 评论(0) 推荐(0)

VC++ : GetIDsOfNames 调用失败,获取的dispid为-1
摘要:今天调试自己的程序,需要调用一个COM组件中的方法,利用GetIDsOfNames获取调用函数对象的DISPID。 GetIDsOfNames: 把COM接口的方法名字和参数(可选)映射成一组DISPID。 GetIDsOfNames( /* [in] */ REFIID riid, /* [siz 阅读全文

posted @ 2017-03-08 17:24 我来乔23 阅读(1011) 评论(0) 推荐(0)

VS2008远程调试操作方法
摘要:前言 最近遇到一个问题:组态王在本地调试机上运行正常,但在远程测试机上运行却出现了崩溃。本机上装有Visual Studio 2008,测试机上则没有。于是,在网上找资料,想利用远程调试方法,在本机上调试测试机出现的软件崩溃问题。 基本概念 1、 目标机: 远程需要调试的机子,也就是被调试程序exe 阅读全文

posted @ 2017-03-06 09:12 我来乔23 阅读(902) 评论(0) 推荐(0)

VC++ 实现窗口抖动
摘要:点击 shake! 按钮,窗口抖动起来了~ 备注: WINDOW_SHAKE_NUM WIN_SHAKE_SLEEP_TIME常数宏。 阅读全文

posted @ 2017-02-23 11:30 我来乔23 阅读(407) 评论(0) 推荐(0)

VC++ 打开文件或文件夹对话框的实现方法
摘要:实际工作开发中,由于各种应用,我们需要调用系统的打开文件对话框或者打开文件夹对话框,或两者兼有。特总结了常用的实现方法,仅供开发参考。 1、 打开文件对话框 常用的方法是使用系统的CFileDialog。 在此介绍另外一种方法就是使用OPENFILENAME结构和GetOpenFileName()函 阅读全文

posted @ 2017-02-15 09:33 我来乔23 阅读(10152) 评论(0) 推荐(0)

使用Visual Leak Detector for Visual C++ 捕捉内存泄露
摘要:什么是内存泄漏? 内存泄漏(memory leak),指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。 C和C++内存泄露 对于C和C++这种没有Garbage Col 阅读全文

posted @ 2016-12-23 13:41 我来乔23 阅读(2291) 评论(0) 推荐(1)

VC++/MFC 最常用宏和指令
摘要:1、#include指令 包含指定的文件,最基本的最熟悉的指令,编程中不得不用,包含库文件用双尖括号,包含自定义头文件用双引号。 2、#define指令 预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在预处理过程就已 阅读全文

posted @ 2016-12-23 13:32 我来乔23 阅读(3025) 评论(0) 推荐(0)

VC++ 设置软件开机自启动的方法
摘要:0 概述 软件开机自启动是比较常用的做法,设置方法也有好几种。 1 使用者模式 在“开始菜单”的所有程序中有个“启动”文件夹,可以将需要设置为开机启动的应用程序放在这个文件夹中。但是,这样做存在不足:“启动”文件夹路径在每台电脑有可能是不同的,没法做到一劳永逸。 同时,如果要禁止程序开机启动,可将“ 阅读全文

posted @ 2016-12-23 13:20 我来乔23 阅读(2930) 评论(0) 推荐(0)

VC++ GetModuleFileName()获取路径字符串中带波浪线~
摘要:GetModuleFileName()获取的字符串中带波浪线,不是完整的路径显示。 原因:获取的是短路径,进行了缩写 解决:还原长路径 其中,strTempPath是带波浪线的短路径,strLongPath为得到的长路径。 主要使用了Win32 API函数GetLongPathName,对应地,获取 阅读全文

posted @ 2016-12-12 18:41 我来乔23 阅读(1151) 评论(0) 推荐(0)

VC++ : error LNK2005: ... already defined in *.obj
摘要:今天写代码遇到了这么一个链接错误:“已经在*.obj中定义”。 error LNK2005: "void __cdecl ReplaceWstringVar(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class 阅读全文

posted @ 2016-12-07 16:19 我来乔23 阅读(1324) 评论(0) 推荐(0)

VC++ : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>
摘要:最近学习Google Breakpad,将其用在了自己的项目中,编译的版本为VS2010,没有什么问题。但是为了和之前的程序兼容,需要使用VS2008版本的程序,于是又编译了VS2008版本的代码,但是链接的时候出错了,错误如下: error LNK2001: unresolved external 阅读全文

posted @ 2016-12-02 17:00 我来乔23 阅读(1903) 评论(0) 推荐(0)

VC++ 应用程序无法正常启动0xc0150002
摘要:使用VC++开发软件,编译后的程序打不开,弹出错误框: 使用Dpends Walker查看依赖项,没有什么异常。 然后,右键“计算机”,选择“管理”,打开计算机管理,在左侧树形结构中,选择“系统工具 -> 事件查看器 -> Windows日志 -> 应用程序”,找到最近事件的应用程序错误: 错误就发 阅读全文

posted @ 2016-11-28 16:23 我来乔23 阅读(4761) 评论(0) 推荐(0)

VC++ 一个简单的Log类
摘要:在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试。 下面实现了一个简单的Log类,使用非常简单,仅供参考。 使用方法: 阅读全文

posted @ 2016-11-28 10:41 我来乔23 阅读(3077) 评论(0) 推荐(1)

VC++ 产生GUID或UUID
摘要:GUID 和 UUID 是一样的,表示全球唯一标识码。 下面是Windows系统中,产生GUID的一种方法(Windows API) 阅读全文

posted @ 2016-11-27 16:33 我来乔23 阅读(4234) 评论(1) 推荐(0)

导航