<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sdnumqy的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sdnumqy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sdnumqy]]></copyright><item><title><![CDATA[C++中string跨DLL失败解决途径]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/103062777</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/103062777</guid><author>sdnumqy</author><pubDate>Thu, 14 Nov 2019 10:35:03 +0800</pubDate><description><![CDATA[转：

1、问题描述：

在一个MFC应用程序exe中，调用另一个DLL中的函数，函数中的一个形参是string类型的，每次调用都会出现乱码的情况，并且会崩溃。

调用前：



调用后：





2、原因分析：

   不同的模块各自有一份C运行时库代码、或者根本没有C运行时库，导致了各个模块会有各自的堆。如果在A堆中申请空间，到B堆中释放就会有崩溃，在模块A申请的空间，必须在模块A中...]]></description><category></category></item><item><title><![CDATA[qt 工程  CMakeLists.txt]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/86488519</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/86488519</guid><author>sdnumqy</author><pubDate>Tue, 15 Jan 2019 10:34:16 +0800</pubDate><description><![CDATA[cmake_minimum_required(3.13.2)

#设置工程
project(qtlearn)
# 关闭控制台 ：+ WIN32
set(QT_USE_QTMAIN TRUE) 
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON) 
# 自动生成开关
set(CMAK...]]></description><category></category></item><item><title><![CDATA[CDC与位图的一些概念 .]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/18040137</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/18040137</guid><author>sdnumqy</author><pubDate>Thu, 09 Jan 2014 14:20:20 +0800</pubDate><description><![CDATA[【转】兼容CDC保存整个屏幕程序以及从此引申的思考




//HWND GetDesktopWindow()返回桌面窗口的句柄
CDC* pdeskDC = GetDesktopWindow()->GetDC();//获取桌面窗口上下文环境的指针（句柄）
CRect rect;
GetDesktopWindow()->GetClientRect(rect);//获取桌面屏幕的客户]]></description><category></category></item><item><title><![CDATA[SaveDC 和 RestoreDC]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/17919425</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/17919425</guid><author>sdnumqy</author><pubDate>Mon, 06 Jan 2014 15:51:19 +0800</pubDate><description><![CDATA[SaveDC (HDC hdc);
保存设备上下文栈上。
它的目的是，在不改变设备上下文的情况下，对HDC进行其它的操作，
当这些操作完成后，再对HDC进行恢复。
RestoreDC (HDC hdc, int id) 则是从设备上下文栈中对HDC进行恢复。
典型的用法是：

void
Graphics::
Draw (HDC hdc) {
SaveDC (hdc);
Tex]]></description><category></category></item><item><title><![CDATA[MFC下按钮自绘的实现]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/17917913</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/17917913</guid><author>sdnumqy</author><pubDate>Mon, 06 Jan 2014 14:54:23 +0800</pubDate><description><![CDATA[MFC下按钮自绘的实现（一）


       在MFC下编程，很多时候对于标准的按钮控件不是很满意，想要弄的美观点。这就需要按钮自绘。这里简单记录一下方法，以免过个十天半个月的，自己又忘的一干二净了。
       首先给工程添加一个MFC类，基类为CButton。要想让按钮具备自绘功能，就要为按钮添加BS_OWNERDRAW属性。为类CButton重载PreSubclassWindow]]></description><category></category></item><item><title><![CDATA[CColorDialog ， CFileDialog ， CFontDialog的使用说明]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/17027989</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/17027989</guid><author>sdnumqy</author><pubDate>Fri, 29 Nov 2013 17:48:24 +0800</pubDate><description><![CDATA[CFileDialog文件选择对话框的使用：
   首先构造一个对象并提供相应的参数，构造函数原型如下：
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OV]]></description><category></category></item><item><title><![CDATA[VC++ 元文件保存矢量图形]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/17027959</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/17027959</guid><author>sdnumqy</author><pubDate>Fri, 29 Nov 2013 17:47:40 +0800</pubDate><description><![CDATA[元文件的使用保存图形和重绘图形
  1：元文件设备上下文CMetaFileDC类，派生于CDC
  2：使用Windows元文件的步骤
     1：利用CMetaFileDC类的构造函数构造一个元文件对象，然后利用该类的Create成员函数创建一个Windows设备上下文，并与之前的对象关联起来
    Create()函数声明为 BOOL Create(LPCTSTR lpszFile]]></description><category></category></item><item><title><![CDATA[封装ADO编程Connection对象的类]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/16968413</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/16968413</guid><author>sdnumqy</author><pubDate>Tue, 26 Nov 2013 17:41:19 +0800</pubDate><description><![CDATA[// ADOConnection.cpp: implementation of the CADOConnection class.
//
/**///////////////////////////////////////////////////////////////////////
/**//************************************************]]></description><category></category></item><item><title><![CDATA[使用ADO存取数据]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/16967901</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/16967901</guid><author>sdnumqy</author><pubDate>Tue, 26 Nov 2013 17:39:07 +0800</pubDate><description><![CDATA[Visual C 提供了对ADO编程的支持，在每个windows系统的系统盘下面都有目录“program files\common files\system\ado”,在这个目录下面包含一个msado**.dll文件，根据不同的windows版本，可以提供msado15.dll、msado2.dll。
 
      利用#import宏可以将这个动态库文件加载到工程中，这个动态库提供对ADO]]></description><category></category></item><item><title><![CDATA[WritePrivateProfileString等读写.ini配置文件 .]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/16966011</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/16966011</guid><author>sdnumqy</author><pubDate>Tue, 26 Nov 2013 15:51:50 +0800</pubDate><description><![CDATA[配置文件中经常用到ini文件，在VC中其函数分别为：
写入.ini文件：
BOOL WritePrivateProfileString(
  LPCTSTR lpAppName,  // INI文件中的一个字段名[节名]可以有很多个节名

  LPCTSTR lpKeyName,  // lpAppName 下的一个键名，也就是里面具体的变量名

  LPCTSTR lpString]]></description><category></category></item><item><title><![CDATA[WIN32_FIND_DATA结构详解]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/16828089</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/16828089</guid><author>sdnumqy</author><pubDate>Tue, 19 Nov 2013 17:54:37 +0800</pubDate><description><![CDATA[WIN32_FIND_DATA结构描述了一个由FindFirstFile, FindFirstFileEx, 或FindNextFile函数查找到的文件信息，
typedef struct _WIN32_FIND_DATA {
　　 DWORD dwFileAttributes; //文件属性
　　 FILETIME ftCreationTime; // 文件创建时间
　　 FILETIM]]></description><category></category></item><item><title><![CDATA[struct stat结构体的详解和用法 .]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/16828075</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/16828075</guid><author>sdnumqy</author><pubDate>Tue, 19 Nov 2013 17:53:10 +0800</pubDate><description><![CDATA[//! 需要包含de头文件
#include 
#include  
int stat(const char *filename, struct stat *buf); //! prototype,原型 
struct stat
{
    dev_t       st_dev;     /* ID of device containing file -文件所在设备的ID*/
   ]]></description><category></category></item><item><title><![CDATA[使用FindFirstFile,FindNextFile遍历一个文件夹]]></title><link>https://blog.youkuaiyun.com/sdnumqy/article/details/16828025</link><guid>https://blog.youkuaiyun.com/sdnumqy/article/details/16828025</guid><author>sdnumqy</author><pubDate>Tue, 19 Nov 2013 17:51:43 +0800</pubDate><description><![CDATA[//遍历文件夹函数 

void 
TraverseFolder(LPCTSTR 
lpPath) 
{ 
    TCHAR
szFind[MAX_PATH] = {_T("\0")};

    WIN32_FIND_DATA findFileData;

    BOOL
bRet; 
  
    _tcscpy_s(szFind, MAX_PATH, lpPa]]></description><category></category></item></channel></rss>