<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mfreesky的专栏]]></title><description><![CDATA[谢谢指导,多多来访]]></description><link>https://blog.csdn.net/mfreesky</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; mfreesky]]></copyright><item><title><![CDATA[自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应]]></title><link>https://blog.csdn.net/mfreesky/article/details/81982415</link><guid>https://blog.csdn.net/mfreesky/article/details/81982415</guid><author>mfreesky</author><pubDate>Thu, 23 Aug 2018 16:00:48 +0800</pubDate><description><![CDATA[自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应

一般情况下，我们都是在 dialog 里面 放一个 list 控件，然后 用自己的类绑定自己的自绘对象，如同下面：

1.  在 dialog 里面 加一个 list 列表



2. 然后 绑定这个列表



哈哈...]]></description><category></category></item><item><title><![CDATA[在 固定式 三维双目测量系统中 使用 CTreeCtrl 完成 Group 的操作 概念]]></title><link>https://blog.csdn.net/mfreesky/article/details/81432544</link><guid>https://blog.csdn.net/mfreesky/article/details/81432544</guid><author>mfreesky</author><pubDate>Sun, 05 Aug 2018 16:41:31 +0800</pubDate><description><![CDATA[最近 要做一款 产品， 涉及到分组显示，以前采用 Outlookbar，分组 能简单处理，但是要 做到像Gemagic 那样组的管理就很难了，Outlookbar 就必须 用 Tree 来替换掉。但是 MFC 中 CMFCListCtrl 很容易 实现 单行 高亮，多选的操作，但是 CTreeCtrl 却很难了，我们必须根据自己的需求重新 绘制 CTreeCtrl。 经过 3天的努力，在参考若干 ...]]></description><category></category></item><item><title><![CDATA[std::_Unforced 错误]]></title><link>https://blog.csdn.net/mfreesky/article/details/80865743</link><guid>https://blog.csdn.net/mfreesky/article/details/80865743</guid><author>mfreesky</author><pubDate>Sat, 30 Jun 2018 12:46:02 +0800</pubDate><description><![CDATA[严重性	代码	说明	项目	文件	行	禁止显示状态错误	C2664	“bool libbz3ds::IScanningService::StartScan(libbz3ds::PScanningSet,std::function&amp;lt;void (libbz3ds::E_SCANNING_PROCESS_STATUS)&amp;gt;,std::function&amp;lt;void (libbz3ds::PSc...]]></description><category></category></item><item><title><![CDATA[怎么给MFC 某个控件 修改 字体 属性]]></title><link>https://blog.csdn.net/mfreesky/article/details/80689712</link><guid>https://blog.csdn.net/mfreesky/article/details/80689712</guid><author>mfreesky</author><pubDate>Thu, 14 Jun 2018 10:56:37 +0800</pubDate><description><![CDATA[1. 头文件定义 CFont  m_titleFont;2. 初始化，比如在 Cdialog::OnInitDialog(),然后 设置 当前的 控件字体属性   m_titleFont.CreateFont(26, // nHeight         0, // nWidth         0, // nEscapement         0, // nOrientation       ...]]></description><category></category></item><item><title><![CDATA[确保你的 float，double 值 不被 改变]]></title><link>https://blog.csdn.net/mfreesky/article/details/6109960</link><guid>https://blog.csdn.net/mfreesky/article/details/6109960</guid><author>mfreesky</author><pubDate>Fri, 31 Dec 2010 16:04:00 +0800</pubDate><description><![CDATA[<br />最近在做一套系统的时候，发现数据不对，原来是float的初始值已经被改变了。<br />float f1 =1543.56f;<br />调试跟踪的时候发现 f1 = 1543.5601了。<br /><br />分析原因： <br />1.float 在初始化的时候进行了运算，是2e次幂。f1 = 2048.64f就不会有这个问题。<br />2.超出float 的精度的时候，float也会做出处理，使你的值被改变。<br /><br />解决办法：<br />1.自定义数据结构体，如C# 的]]></description><category></category></item><item><title><![CDATA[数字证书基本概念]]></title><link>https://blog.csdn.net/mfreesky/article/details/5444705</link><guid>https://blog.csdn.net/mfreesky/article/details/5444705</guid><author>mfreesky</author><pubDate>Fri, 02 Apr 2010 14:23:00 +0800</pubDate><description><![CDATA[（1）什么是证书?　在一个电子商务系统中，所有参与活动的实体都必须用证书来表明自己的身份。证书一方面可以用来向系统中的其它实体证明自己的身份（每份证书都是经“相对权威的机构”签名的），另一方面由于每份证书都携带着证书持有者的公钥（签名证书携带的是签名公钥，密钥加密证书携带的是密钥加密公钥），所以，证书也可以向接收者证实某人或某个机构对公开密钥的拥有，同时也起着公钥分发的作用。（2）什么是C]]></description><category></category></item><item><title><![CDATA[CA/RA简介]]></title><link>https://blog.csdn.net/mfreesky/article/details/5444695</link><guid>https://blog.csdn.net/mfreesky/article/details/5444695</guid><author>mfreesky</author><pubDate>Fri, 02 Apr 2010 14:21:00 +0800</pubDate><description><![CDATA[开放网络上的电子商务要求为信息安全提供有效的、可靠的保护机制。这些机制必须提供机密性、身份验证特性(使交易的每一方都可以确认其它各方的身份)、不可否认性(交易的各方不可否认它们的参与)。这就需要依靠一个可靠的第三方机构验证，而认证中心（CA：Certification Authority）专门提供这种服务。　　证书机制是目前被广泛采用的一种安全机制，使用证书机制的前提是建立CA（Certifi]]></description><category></category></item><item><title><![CDATA[Crypto API加密通信流程]]></title><link>https://blog.csdn.net/mfreesky/article/details/5444690</link><guid>https://blog.csdn.net/mfreesky/article/details/5444690</guid><author>mfreesky</author><pubDate>Fri, 02 Apr 2010 14:20:00 +0800</pubDate><description><![CDATA[ 应用程序使用Crypto API进行加密通信的一般步骤如下：  1，include wincrypt.h 2，调用CryptAcquireContext()获得某个CSP模块中的密钥容器(key container)的一个句柄； 3，发送方使用CryptImportKey()将接受方的证书导入CSP中，从而获得接收方的公钥； 4，发送方式用CryptGenKey()随机产]]></description><category></category></item><item><title><![CDATA[CAPI写密钥对到USBKey CSP中]]></title><link>https://blog.csdn.net/mfreesky/article/details/5444657</link><guid>https://blog.csdn.net/mfreesky/article/details/5444657</guid><author>mfreesky</author><pubDate>Fri, 02 Apr 2010 13:23:00 +0800</pubDate><description><![CDATA[在前面了解了CryptoAPI和CSP的相关概念之后，我们具体分析了CryptoAPI的相关函数，实现了写证书、私钥的过程和更新证书的过程。写证书和私钥到CSP的方案：首先将CA返回给RA的证书和私钥进行封装，将它们封装成P12结构证书，然后将P12结构证书导入到一个临时的证书库中。在该临时库中找到证书的上下文，通过证书上下文获得一个临时的CSP句柄和证书对应的私钥的类型，然后根据这个CSP句柄和]]></description><category></category></item><item><title><![CDATA[密钥容器和证书的关系]]></title><link>https://blog.csdn.net/mfreesky/article/details/5444653</link><guid>https://blog.csdn.net/mfreesky/article/details/5444653</guid><author>mfreesky</author><pubDate>Fri, 02 Apr 2010 13:22:00 +0800</pubDate><description><![CDATA[其实CSP主要是对容器里的密钥对操作的，和证书关系不大。容器里的密钥对有两种类型：一种是AT_KEYEXCHANGE，表示加密的密钥对，一种是AT_SIGNATURE表示签名的密钥对。由于美国的出口限制，在MS的CSP中加密的密钥对可以取的密钥最大长度通常会比签名的密钥对短。通常加密的密钥对只会用于加密，签名的密钥对只会用于签名，由于某些原因（例如产生证书请求），加密的密钥对也可以用于签名。我把A]]></description><category></category></item><item><title><![CDATA[证书的申请过程（usbkey）]]></title><link>https://blog.csdn.net/mfreesky/article/details/5444645</link><guid>https://blog.csdn.net/mfreesky/article/details/5444645</guid><author>mfreesky</author><pubDate>Fri, 02 Apr 2010 13:21:00 +0800</pubDate><description><![CDATA[Q：有为usbkey写过csp的吗？请问如何实现用usbkey来保存证书？csp的CPSetKeyParam（）需要注意什么？（MSDN上的没看懂）是否需要设定PK_CERTIFICATE这个参数？比如，需要将产生的证书存在D盘根目录下面（暂时代替usbkey），需要哪里设定？A：分别通过调用CryptSetKeyParam和CryptGetKeyParam来调用CSP实现的CPSet]]></description><category></category></item><item><title><![CDATA[CRYTOAPI 库调用出错]]></title><link>https://blog.csdn.net/mfreesky/article/details/5438243</link><guid>https://blog.csdn.net/mfreesky/article/details/5438243</guid><author>mfreesky</author><pubDate>Wed, 31 Mar 2010 17:27:00 +0800</pubDate><description><![CDATA[调试中，出现以下错误：Compiling...Keycos.cppd:/soft work/other/devinterface/keycos.cpp(34) : warning C4101: ifData : unreferenced local variabled:/soft work/other/devinterface/keycos.cpp(383) : error C2065: ]]></description><category></category></item><item><title><![CDATA[了解 volatile 的用法]]></title><link>https://blog.csdn.net/mfreesky/article/details/3482100</link><guid>https://blog.csdn.net/mfreesky/article/details/3482100</guid><author>mfreesky</author><pubDate>Tue, 09 Dec 2008 10:35:00 +0800</pubDate><description><![CDATA[volatile的本意是一般有两种说法--1.“暂态的”；2.“易变的”。其实Volatile是由于编译器优化所造成的一个Bug而引入的关键字。 int a = 10; int b = a; int c = a; 理论上来讲每次使用a的时候都应该从a的地址来读取变量值，但是这存在一个效率问题，就是每次使用a都要去内存中取变量值，然后再通过系统总线传到CPU处理，这样开销会很大。所以那些编译器优]]></description><category></category></item><item><title><![CDATA[pragma指令简介]]></title><link>https://blog.csdn.net/mfreesky/article/details/3481801</link><guid>https://blog.csdn.net/mfreesky/article/details/3481801</guid><author>mfreesky</author><pubDate>Tue, 09 Dec 2008 09:57:00 +0800</pubDate><description><![CDATA[原文地址 http://www.cnblogs.com/cdo/archive/2005/06/08/170442.html 在所有的预处理指令中，#Pragma 指令可能是最复杂的了，它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系]]></description><category></category></item><item><title><![CDATA[C预处理和宏]]></title><link>https://blog.csdn.net/mfreesky/article/details/2885783</link><guid>https://blog.csdn.net/mfreesky/article/details/2885783</guid><author>mfreesky</author><pubDate>Fri, 05 Sep 2008 14:41:00 +0800</pubDate><description><![CDATA[ 预处理,宏,常量,变量1.预处理.预处理常量1.1__FILE__显示源文件完整路径和名称代码如printf("the ocde in the file %s/n",__FILE__);1.2__LINE__显示源文件当前行号代码如printf("the ocde in the line %d/n",__LINE__);1.3__DATE__,__TIME__显示编译时的日期和时间代码如prin]]></description><category></category></item><item><title><![CDATA[Stl vector,map set简单用法]]></title><link>https://blog.csdn.net/mfreesky/article/details/2869309</link><guid>https://blog.csdn.net/mfreesky/article/details/2869309</guid><author>mfreesky</author><pubDate>Tue, 02 Sep 2008 21:49:00 +0800</pubDate><description><![CDATA[C++的标准模板库（Standard Template Library，简称STL）是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector，set和map，比较常用的算法有Sort等。.一. vector1.声明：          一个vector类似于一个动态的一维数组。          vector a; //声明一个元素为int类型的vector a]]></description><category></category></item><item><title><![CDATA[vc6.0 序列化]]></title><link>https://blog.csdn.net/mfreesky/article/details/2555717</link><guid>https://blog.csdn.net/mfreesky/article/details/2555717</guid><author>mfreesky</author><pubDate>Tue, 17 Jun 2008 09:00:00 +0800</pubDate><description><![CDATA[使类可序列化需要五个主要步骤。下面列出了这些步骤并在以后章节内进行了解释： 从 CObject 派生类（或从 CObject 派生的某个类中派生）。 重写 Serialize 成员函数。 使用 DECLARE_SERIAL 宏（在类声明中）。 定义不带参数的构造函数。 为类在实现文件中使用 IMPLEMENT_SERIAL 宏。 如果直接调用 Serialize 而不是通过]]></description><category></category></item><item><title><![CDATA[c++五种内存分配、堆与栈区别]]></title><link>https://blog.csdn.net/mfreesky/article/details/2218914</link><guid>https://blog.csdn.net/mfreesky/article/details/2218914</guid><author>mfreesky</author><pubDate>Wed, 26 Mar 2008 10:44:00 +0800</pubDate><description><![CDATA[在C++中，内存分成5个区，他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。  　　栈，就是那些由编译器在需要的时候分配，在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。  　　堆，就是那些由new分配的内存块，他们的释放编译器不去管，由我们的应用程序去控制，一般一个new就要对应一个delete。如果程序员没有释放掉，那么在程序结束后，操作]]></description><category></category></item><item><title><![CDATA[关于回调函数2]]></title><link>https://blog.csdn.net/mfreesky/article/details/2218894</link><guid>https://blog.csdn.net/mfreesky/article/details/2218894</guid><author>mfreesky</author><pubDate>Wed, 26 Mar 2008 10:40:00 +0800</pubDate><description><![CDATA[   三，精妙比喻:回调函数还真有点像您随身带的BP机：告诉别人号码，在它有事情时Call您。

       回调用于层间协作，上层将本层函数安装在下层，这个函数就是回调，而下层在一定条件下触发回调，例如作为一个驱动，是一个底层，他在收到一个数据时，除了完成本层的处理工作外，还将进行回调，将这个数据交给上层应用层来做进一步处理，这在分层的数据通信中很普遍。其实回调和API非常接近，他们的共性都是...]]></description><category></category></item><item><title><![CDATA[关于回调函数]]></title><link>https://blog.csdn.net/mfreesky/article/details/2218879</link><guid>https://blog.csdn.net/mfreesky/article/details/2218879</guid><author>mfreesky</author><pubDate>Wed, 26 Mar 2008 10:36:00 +0800</pubDate><description><![CDATA[ 一，回调函数  

 我们经常在C++设计时通过使用回调函数可以使有些应用（如定时器事件回调处理、用回调函数记录某操作进度等）变得非常方便和符合逻辑，那么它的内在机制如何呢，怎么定义呢?它和其它函数（比如钩子函数）有何不同呢？

使用回调函数实际上就是在调用某个函数（通常是API函数）时，将自己的一个函数（这个函数为回调函数）的地址作为参数传递给那个函数。

而那个函数在需要的时候，利用传递的地...]]></description><category></category></item></channel></rss>