<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lyntion的Blog]]></title><description><![CDATA[Windows|linux|C++|PHP|WinDbg|OD|html+javascript|C/S|B/S]]></description><link>https://blog.youkuaiyun.com/Lyntion</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lyntion]]></copyright><item><title><![CDATA[MFC窗口创建、销毁消息流程]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/41595655</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/41595655</guid><author>Lyntion</author><pubDate>Sat, 29 Nov 2014 14:39:23 +0800</pubDate><description><![CDATA[Windows消息处理机制





MFC应用程序中处理消息的顺序



1. AfxWndProc()该函数负责接收消息，找到消息所属的CWnd对象，然后调用AfxCallWndProc

2.AfxCallWndProc()该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用，然后调用WindowProc()函数

3.WindowProc]]></description><category></category></item><item><title><![CDATA[EnumThreadWindows枚举线程的所有窗口]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/41595583</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/41595583</guid><author>Lyntion</author><pubDate>Sat, 29 Nov 2014 14:32:51 +0800</pubDate><description><![CDATA[BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam )
{   
    std::listHWND>* plist = (std::listHWND>*)lParam;
    plist->push_back(hwnd);
    return true;
}
int main(void)
{
    CWnd* pWnd = CW]]></description><category></category></item><item><title><![CDATA[Windows 7桌面显示图标窗口类名称]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/41595319</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/41595319</guid><author>Lyntion</author><pubDate>Sat, 29 Nov 2014 14:01:34 +0800</pubDate><description><![CDATA[Windows 7下，我们取桌面图标窗口的句柄使用以下语句 在windows XP时代，我们获取桌面图标窗口的句柄往往用一下语句：HWND hwndParent = ::FindWindow( "Progman", "Program Manager" );HWND hwndSHELLDLL_DefView = ::FindWindowEx( hwndParent, NULL, "SHELLDLL_]]></description><category></category></item><item><title><![CDATA[vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ，ShellExecuteEX编程 --- 获取管理员权限]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/41595283</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/41595283</guid><author>Lyntion</author><pubDate>Sat, 29 Nov 2014 13:56:45 +0800</pubDate><description><![CDATA[ShellExecuteEX编程 --- 获取管理员权限:http://blog.youkuaiyun.com/jhui163/article/details/5873027

怎样让你的应用程序获得管理员权限：就是在运行开发工具如vc6.0 或vs2010时，要以管理员身份运行，这样你的应用程序才可以继承

http://bbs.youkuaiyun.com/topics/390262991

 

解]]></description><category></category></item><item><title><![CDATA[静态库编译和连接遇到的奇怪问题]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/40682317</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/40682317</guid><author>Lyntion</author><pubDate>Sat, 01 Nov 2014 17:18:06 +0800</pubDate><description><![CDATA[在编译静态库(lib)时，遇到过的三种问题:
1，  如果没有正确包含lib文件的路径，会提示无法打开静态库。
2，  error LNK 2001: 有可能是路径问题，或者是头文件与lib库不对应，或者是lib文件有问题。
3，  error LNK 2005: 这个错误是微软设计错误，因此如果遇到这个错误，我们只能躲过这个链接错误。具体的办法就是将那个提示出错的库放到另外一个库的前面。另]]></description><category></category></item><item><title><![CDATA[windows客户端崩溃分析和调试]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/40214851</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/40214851</guid><author>Lyntion</author><pubDate>Sat, 18 Oct 2014 20:15:24 +0800</pubDate><description><![CDATA[本文介绍windows上崩溃分析的一些手段，顺便提多进程调试、死锁等。

1.崩溃分析过程
1.1 确认错误码
无论是用windbg还是用vs，首先应该注意的是错误码，而90%以上的崩溃都是非法访问。
在非法访问时，可以看一下访问的目标地址。地址是0，或者离0很近（0x00000008或0xfffffffc），
一般和空指针相关。如果是一个貌似正常的地址，一般是对象已析构后访问其数据，]]></description><category></category></item><item><title><![CDATA[windows客户端开发调试工具]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/40214735</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/40214735</guid><author>Lyntion</author><pubDate>Sat, 18 Oct 2014 20:09:57 +0800</pubDate><description><![CDATA[1.windows常用开发与调试工具
1.1 Sysinternals
内核大神打造，含大量windows系统工具，windows开发必备神器，大神被MS招安。
下载地址：http://technet.microsoft.com/en-us/sysinternals


Procmon.exe
监视程序运行过程中的动作，可用于性能监控。


procexp.exe
相当于升级]]></description><category></category></item><item><title><![CDATA[nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined问题解决]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736831</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736831</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:52:27 +0800</pubDate><description><![CDATA[如果开始用了一个ATL的Dll工程，然后为了在这个dll工程里面使用MFC，
在里面加入MFC支持
在stdafx.h的atlbase.h前面加入
#include  // MFC core and standard components
#include  // MFC extensions
#include  // MFC Automation extensions
那么就会出现错]]></description><category></category></item><item><title><![CDATA[error C3859: 超过了PCH的虚拟内存范围；请使用“-Zm33”或更大的命令行选项重新编译]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736825</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736825</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:49:41 +0800</pubDate><description><![CDATA[产生的原因：
为了加快boost的编译，使用的预编译头。而且加的boost的头文件比较多，导致pch文件超过了默认值。
解决的办法：
1. 找到 工程->属性->c/c++->命令行->其他选项
2. 输入/Zm100，其中后面的数字可以更大
定义：
/Zm（指定预编译头的内存分配限额）：确定编译器分配的用于构造预编译头的内存量。格式：/Zmfactor。
factor：一个比例因子]]></description><category></category></item><item><title><![CDATA[vc中异常捕捉的最后一道屏障-SetUnhandledExceptionFilter]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736815</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736815</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:49:11 +0800</pubDate><description><![CDATA[在C++中定义了很多异常捕捉机制，但是在VC中在win平台上有一个更高层的异常处理机制，函数SetUnhandledExceptionFilter，这个函数很有用，它是异常捕捉的最后一道屏障。它有这样的规则，对于未捕捉的异常并且未在调试状态下（通常就是只在release中），将自动调用这里面的异常处理函数。

默认的异常处理函数就是弹出一个对话框，告诉你程序异常了，而在发布软件时，你可以用其他]]></description><category></category></item><item><title><![CDATA[检验和算法]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736799</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736799</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:44:49 +0800</pubDate><description><![CDATA[It works!1、CRC（循环冗余码)
  校验和的算法为：
      所有各字节的和模256的余。即各字节二进制算术和，不计超过256的溢出值（即只取其和
  的低8位数据），然后用0x100减去这个算数累加和，得出得值就是此行得校验和。
  例如：(16进制数)  10 00 10 00 18 F0 9F E5 80 5F 20 B9 F0 FF 1F E5 18 F0 9F E]]></description><category></category></item><item><title><![CDATA[sleep(0)的作用]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736787</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736787</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:43:19 +0800</pubDate><description><![CDATA[微软的msdn: A value of zero causes the thread to relinquish the remainder of its time slice to
 any other thread of equal priority that is ready to run. If no other threads of equal priority are ready t]]></description><category></category></item><item><title><![CDATA[Windows自启动程序的十大藏身之所]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736781</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736781</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:42:34 +0800</pubDate><description><![CDATA[一、当前用户专有的启动文件夹

　　这是许多应用软件自动启动的常用位置，Windows自动启动放入该文件夹的 








所有快捷方式。用户启动文件夹一般在：\Documents and Settings\\「开始」菜单\程序\启动，其中“”是当前登录的用户帐户名称。

　　二、对所有用户有效的启动文件夹

　　这是寻找自动启动程序的第二个重要位置，不管用户用什]]></description><category></category></item><item><title><![CDATA[U盘防毒最强方案(创建删不掉的autorun.inf文件夹)]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736737</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736737</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:33:57 +0800</pubDate><description><![CDATA[病毒，每个人都深受其害，痛恨不已，特别是现在移动设备MP3、MP4、手机、U盘、移动硬盘飞速发展的时代，病毒也随着这些移动设备和网络快速蔓延和滋生，所以如何防止病毒入侵到自己的爱机和移动设备上就太重要了。
        在网络上曾经有人提出在硬盘根目录和移动设备根目录下建立一个文件夹，名字就叫autorun.inf，用来防止利用借助autorun.inf文件进行传播的病毒。
        ]]></description><category></category></item><item><title><![CDATA[VC包含目录、附加依赖项、库目录及具体设置]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736731</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736731</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:32:09 +0800</pubDate><description><![CDATA[包含目录：#include 中headerfile.h的搜索目录。
如果有XXX.h找不到，设置这个目录可以解决。

附加依赖项：C++的库会把函数、类的声明放在*.h中，实现放在*.cpp或*.cc中。编译之后，*.cpp，*.cc，*.c会被打包成一个.lib文件，这样可以保护源代码。
所以，要使用一个库，除了要include他的头文件以外，还要在链接过程中把lib加进去。这个就是在附]]></description><category></category></item><item><title><![CDATA[VC 运行时库 /MD、/MDd 和 /MT、/MTd]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736721</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736721</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:30:44 +0800</pubDate><description><![CDATA[有段时间在写cuda程序是出现过

error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR71D.dll) 中定义 等类似错误

原因应该是在vs2010 工程属性中 c/c++的代码生成（code generation)中的设置与cuda c/c++ Host Runtime library不一样导致的。

后来在写opencv程序中的 findcont]]></description><category></category></item><item><title><![CDATA[按类别列出的编译器选项Visual Studio 2010]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736705</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736705</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:29:06 +0800</pubDate><description><![CDATA[按类别列出的编译器选项Visual Studio 2010　　其他版本 Visual Studio 2008 Visual
 Studio 2005

下面是一个完整的编译器选项分类列表。有关按字母顺序排序的列表，请参见按字母顺序列出的编译器选项。

优化




选项


用途




/O1


创建小代码




/O2


创建快速]]></description><category></category></item><item><title><![CDATA[VC2008中影响exe大小和速度的全部编译选项]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736691</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736691</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:26:37 +0800</pubDate><description><![CDATA[用VC就得用IDE，我也以IDE的工程设置里面的排列顺序介绍，某些选项需要自己手动添加的最后介绍，我后面说的默认值是release的，debug版本一般不需要调选项。 

项目 - 属性 - 配置属性 - C/C++，这是编译器选项。 

优化： 
    通常，算法程序选择最大化速度(/O2)，界面程序选择最小化大小(/O1)，可以获得最佳的效果。 
    优选大小或速度，只有在使]]></description><category></category></item><item><title><![CDATA[Vector用法]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736663</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736663</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:23:21 +0800</pubDate><description><![CDATA[(1)vector 标识符 ;

(2)vector 标识符(最大容量) ；

(3)vector 标识符（最大容量，初始所有值）；

(4) int i[4] = {12,3,4,5};
vector 类型 > vi(i , i+2); //得到i索引值为3以后的值 ；  

(5)vector > //vi 定义2维的容器；记得一定要有空格，不然会报错
vector int]]></description><category></category></item><item><title><![CDATA[用boost的PropertyTree json_parser 生成json字符串]]></title><link>https://blog.youkuaiyun.com/Lyntion/article/details/39736629</link><guid>https://blog.youkuaiyun.com/Lyntion/article/details/39736629</guid><author>Lyntion</author><pubDate>Thu, 02 Oct 2014 15:17:55 +0800</pubDate><description><![CDATA[// test.cpp
#include 
#include 
#include 
#include 
#include 
using namespace std;
using namespace boost::property_tree;
 
int main(){ 
    ptree pt_1,pt_11,pt_12;
    
    pt_11.put("id","3445");
   ]]></description><category></category></item></channel></rss>