开发环境: Windows 10, x64, VS2013 update 5, VC++
(一) Win32
1.1 类*.hpp文件编译导出DLL 操作:
把一个类的cpp文件和h文件合并写成hpp文件时,编译导出此类,需注意:
在其他任意一个cpp文件中添加引用此hpp【#include "Segment2d.hpp"】即可导出此类,否则不导出。
示例:
#ifndef _ME_LIB_INCLUDE_SEGMENT2D_HEADER_
#define _ME_LIB_INCLUDE_SEGMENT2D_HEADER_
/*
** Segment2d.hpp 文件
*/
#if defined _DLL_EXPORTS
#define LIB_API __declspec(dllexport)
#define LIB_APIC(x) extern "C" __declspec(dllexport) (x) __stdcall
#else //!_DLL_EXPORTS;
#define LIB_API __declspec(dllimport)
#define LIB_APIC(x) extern "C" __declspec(dllimport) (x) __stdcall
#endif // _DLL_EXPORTS;
#include "Point2d.hpp"
class LIB_API Segment2d
{
private:
Point2d _p0, _p1;
public:
Segment2d(const Point2d& p0, const Point2d& p1): _p0(p0),_p1(p1){}
Segment2d(const Segment2d& seg): _p0(seg._p0), _p1(seg._p1) {}
};
#endif //_ME_LIB_INCLUDE_SEGMENT2D_HEADER_
在其他任意一个cpp文件中,添加引用此文件即可,如下
/*
** ContourHelper.cpp
*/
#include "ContourHelper.h"
#include "Segment2d.hpp" // 本cpp没使用到此头文件,在此引用只是为了编译导出Segment2d
(二) MFC
2.1 支持 文件拖拽 操作:
将窗口属性Accept Files设置为True;
添加窗口消息WM_DROPFILES的处理函数:OnDropFiles(HDROP hDropInfo) 及消息映射宏ON_WM_DROPFILES();
// DragQueryFile
// DragFinish
// 注意点:窗口与子窗口,控件等不要重复设置属性Accept Files。