<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mpp_king的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mpp_king</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mpp_king]]></copyright><item><title><![CDATA[VS命令参数 $(SolutionDir)\..\test中“..”含义]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/106418815</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/106418815</guid><author>mpp_king</author><pubDate>Fri, 29 May 2020 09:33:16 +0800</pubDate><description><![CDATA[..是返回上一级目录，从你的这个来看应该是解决方案的目录的上一级目录
一般来说一个“.”是当前目录，二个“..”就是上一级目录
]]></description><category></category></item><item><title><![CDATA[vs中能编译通过，但是会有红色下划线提示未定义标示符问题]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/102704603</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/102704603</guid><author>mpp_king</author><pubDate>Wed, 23 Oct 2019 16:42:00 +0800</pubDate><description><![CDATA[原文声明：版权声明：本文为博主原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接和本声明。

项目能编译通过，但是代码中会有红色下划线提示未定义标示符。就连BOOL TRUE FALSE等都会有下划线。

这通常是该代码文件包含在项目文件夹的子文件夹中。

解决办法是配置包含项目目录即可：

打开项目属性－》配置属性－》C/C++常规－》附加包含目录－》填入：$(Proje...]]></description><category></category></item><item><title><![CDATA[正确调用DLL时，依然出现无法解析外部文件]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/96596178</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/96596178</guid><author>mpp_king</author><pubDate>Sat, 20 Jul 2019 15:37:07 +0800</pubDate><description><![CDATA[C++开发时，正确调用外部DLL时，出现无法解析外部文件的错误，可能的原因：

接口文件中存在以下代码


#ifdef EXPORT_STDCALL
#define CALL_STACK __stdcall
#else
#define CALL_STACK __cdecl
#endif

“属性” - “C/C++” - "预处理器" - "预处理器定义" 内添加 ：EXPORT_STDCALL...]]></description><category></category></item><item><title><![CDATA[string 转换为 LPCWSTR]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89468003</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89468003</guid><author>mpp_king</author><pubDate>Tue, 23 Apr 2019 10:58:34 +0800</pubDate><description><![CDATA[LPCWSTR stringToLPCWSTR(std::string orig)
	{
		size_t origsize = orig.length() + 1;
		size_t convertedChars = 0;
		wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(orig.length()-1));
		mbstowc...]]></description><category></category></item><item><title><![CDATA[获取dll所在路径]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89451906</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89451906</guid><author>mpp_king</author><pubDate>Mon, 22 Apr 2019 14:58:46 +0800</pubDate><description><![CDATA[string GetPath()
	{
		string dllPath;
		TCHAR tcFullPath[MAX_PATH];
		char* pChPath = new char[MAX_PATH];
		memset(pChPath,'\0',MAX_PATH);

		GetModuleFileName(::LoadLibrary(L"动态库名称.dll"),tcFullPath,...]]></description><category></category></item><item><title><![CDATA[签名，验签的理解]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89138778</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89138778</guid><author>mpp_king</author><pubDate>Tue, 09 Apr 2019 11:13:04 +0800</pubDate><description><![CDATA[点击打开原文链接

一、公钥加密
假设一下，我找了两个数字，一个是1，一个是2。我喜欢2这个数字，就保留起来，不告诉你们(私钥），然后我告诉大家，1是我的公钥。

我有一个文件，不能让别人看，我就用1加密了。别人找到了这个文件，但是他不知道2就是解密的私钥啊，所以他解不开，只有我可以用。数字2，就是我的私钥，来解密。这样我就可以保护数据了。

例如：我的好朋友x用我的公钥1加密了字符a，加密后成...]]></description><category></category></item><item><title><![CDATA[获取打印机设备环境DC的方法]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89135422</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89135422</guid><author>mpp_king</author><pubDate>Tue, 09 Apr 2019 09:56:41 +0800</pubDate><description><![CDATA[点击打开原文地址
]]></description><category></category></item><item><title><![CDATA[MFC中Invalidate() 和UpdateWindow()的用法]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89023611</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89023611</guid><author>mpp_king</author><pubDate>Thu, 04 Apr 2019 15:17:17 +0800</pubDate><description><![CDATA[点击打开原文链接

Invalidate()是强制系统进行重画，但是不一定就马上进行重画。因为Invalidate()只是通知系统，此时的窗口已经变为无效。强制系统调用WM_PAINT，而这个消息只是Post，就是将该消息放入消息队列，当执行到WM_PAINT消息时才会对窗口进行重绘;

UpdateWindow向窗体发送WM_PAINT消息，在发送之前判断GetUpdateRect(hWnd,...]]></description><category></category></item><item><title><![CDATA[WritePrivateProfileString等读写.ini配置文件]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89020836</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89020836</guid><author>mpp_king</author><pubDate>Thu, 04 Apr 2019 13:45:45 +0800</pubDate><description><![CDATA[点击打开原文链接

1、写入.ini文件：


BOOL WritePrivateProfileString(
  LPCTSTR lpAppName,  // INI文件中的一个字段名[节名]可以有很多个节名
  LPCTSTR lpKeyName,  // lpAppName 下的一个键名，也就是里面具体的变量名
  LPCTSTR lpString,   // 键值,也就是数据
  LPCT...]]></description><category></category></item><item><title><![CDATA[LoadLibrary函数详细说明]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89020577</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89020577</guid><author>mpp_king</author><pubDate>Thu, 04 Apr 2019 13:30:53 +0800</pubDate><description><![CDATA[点击打开原文链接

1、作用：

将指定的模块加载到调用进程的地址空间中。

2、使用语法


HMODULE WINAPI LoadLibrary（
  _In_ LPCTSTR lpFileName
）;

3、参数

lpFileName：模块的名称。这可以是库模块（.dll文件）或可执行模块（.exe文件）。指定的名称是模块的文件名，与模块定义（.def）文件中的LIBRARY关键字所指定...]]></description><category></category></item><item><title><![CDATA[CFileFind用法总结]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89014865</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89014865</guid><author>mpp_king</author><pubDate>Thu, 04 Apr 2019 10:32:59 +0800</pubDate><description><![CDATA[点击打开原文地址

CFileFind用法总结：

头文件：afx.h
功能：本地文件查找
具体类型文件：.格式，例如：.pdf：查找.pdf文件
所有 文件：.
CFileFind类的构造函数::CFileFind()和关闭函数::Close()，成对使用。
成员函数根据操作特性分成三类：查找操作类、获得文件属性类和判断文件属性类。

（1） 查找操作类：

::FindFile()：...]]></description><category></category></item><item><title><![CDATA[CreateThread与_beginthreadex本质区别]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/89011039</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/89011039</guid><author>mpp_king</author><pubDate>Thu, 04 Apr 2019 10:08:27 +0800</pubDate><description><![CDATA[点击打开原文链接

一、预热：

下面这个程序的主线程会创建了一个子线程并等待其运行完毕，子线程就输出它的线程ID号然后输出一句经典名言——Hello World。整个程序的代码非常简短，只有区区几行。


//最简单的创建多线程实例
#include &lt;stdio.h&gt;
#include &lt;windows.h&gt;
//子线程函数
DWORD WINAPI ThreadFun...]]></description><category></category></item><item><title><![CDATA[线程中CreateEvent和SetEvent及WaitForSingleObject的用法]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/88999224</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/88999224</guid><author>mpp_king</author><pubDate>Wed, 03 Apr 2019 17:35:19 +0800</pubDate><description><![CDATA[点击打开原文链接

一、

CreateEvent是创建windows事件的意思，作用主要用在判断线程退出，线程锁定方面.

EVENT有两种状态：发信号，不发信号。

SetEvent：将EVENT置为发信号。

ResetEvent：将EVENT置为不发信号。

WaitForSingleObject()：等待，直到参数所指定的OBJECT成为发信号状态时才返回，OBJECT可以是EVENT...]]></description><category></category></item><item><title><![CDATA[DeleteDC() 与 ReleaseDC() 的区别]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/88998525</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/88998525</guid><author>mpp_king</author><pubDate>Wed, 03 Apr 2019 16:30:12 +0800</pubDate><description><![CDATA[点击打开原文链接

DeleteDC

该函数删除指定的设备上下文环境（DC）。

原型：

BOOL DeleteDC(HDChdc)；

参数：

hdc：设备上下文环境的句柄。

返回值：

成功，返回非零值；失败，返回零。调用GetLastError获取扩展错误信息。

说明：

如果一个设备上下文环境的句柄是通过调用GetDC函数得到的，那么应用程序不能删除该设备上下文环境，它应...]]></description><category></category></item><item><title><![CDATA[m_hWnd和this指针]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/88997402</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/88997402</guid><author>mpp_king</author><pubDate>Wed, 03 Apr 2019 16:00:09 +0800</pubDate><description><![CDATA[点击打开原文链接

一、m_hWnd

1、m_hWnd这个成员变量最早是定义在类CWnd中，而且是类CWnd的第一个数据成员。它是窗口类的一个句柄，凡是从CWnd派生的类都有这个句柄，凡是以CWnd派生的类定义的对象内部也都有这个句柄，它是类或者对象标识自己的句柄。

凡是窗口都有一个句柄用来标识自己，在CWnd类中将这个句柄作为一个成员变量直接封装了，所以CWnd类的成员函数都没有句柄这个参数...]]></description><category></category></item><item><title><![CDATA[MFC中的模态对话框与非模态对话框]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/88994820</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/88994820</guid><author>mpp_king</author><pubDate>Wed, 03 Apr 2019 15:12:33 +0800</pubDate><description><![CDATA[点击打开原文链接

模态对话框创建：


MyDialog mydlg;
mydlg.DoModal()

当前只能运行此模态对话框，且停止主窗口的运行，直到模态对话框退出，才允许主窗口运行。

模态对话框的关闭顺序：

OnClose:按关闭符号X后，响应WM_CLOSE消息；

OnKillFocus:窗口即将失去输入焦点，响应WM_KILLFOCUS消息；

OnDestroy:窗口即将被销...]]></description><category></category></item><item><title><![CDATA[扩大下C盘空间]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/88955021</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/88955021</guid><author>mpp_king</author><pubDate>Mon, 01 Apr 2019 19:27:31 +0800</pubDate><description><![CDATA[点击打开原文链接

1、在桌面“我的电脑”右键，找到“管理”，如图：



2、在“管理”对话框内，找到“磁盘管理”，如图：



3、在“磁盘管理”里面找到D盘，鼠标右键，“压缩卷”，在如下图的红框内，填入压缩的大小。



4、鼠标右键C盘，点击“扩展卷”，即可。

注意：

1、若C盘的“扩展卷”为灰色，则借助于“分区助手”软件。（下载链接）

2、使用“分区助手”软件时，每次尽量不要合并太...]]></description><category></category></item><item><title><![CDATA[new对象时，类名后加括号与不加括号的区别]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/88942070</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/88942070</guid><author>mpp_king</author><pubDate>Mon, 01 Apr 2019 09:59:35 +0800</pubDate><description><![CDATA[点击打开原文链接


#include &lt;iostream&gt;
using namespace std;

// 空类
class empty
{
};

// 一个默认构造函数，一个自定义构造函数
class Base
{
public:
    Base() 
    { 
        cout &lt;&lt; " default Base construct " &lt;&l...]]></description><category></category></item><item><title><![CDATA[Unicode 和 UTF-8 有何区别？]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/88931542</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/88931542</guid><author>mpp_king</author><pubDate>Sun, 31 Mar 2019 17:19:10 +0800</pubDate><description><![CDATA[点击打开原文链接

简单来说：

        Unicode 是「字符集」

        UTF-8 是「编码规则」

其中：

        字符集：为每一个「字符」分配一个唯一的 ID（学名：码位 / 码点 / Code Point）

        编码规则：将「码位」转换为字节序列的规则（编码/解...]]></description><category></category></item><item><title><![CDATA[WideCharToMultiByte和MultiByteToWideChar函数的用法]]></title><link>https://blog.youkuaiyun.com/mpp_king/article/details/88929985</link><guid>https://blog.youkuaiyun.com/mpp_king/article/details/88929985</guid><author>mpp_king</author><pubDate>Sun, 31 Mar 2019 15:54:33 +0800</pubDate><description><![CDATA[点击打开原文链接

辅助链接

WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。
MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。


常用的代码页有CP_ACP和CP_UTF8两个。使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。
使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。

...]]></description><category></category></item></channel></rss>