在工程中用到了VC的CRectTracker画图,是图片可以再次进行编辑。但是最近程序要发布的时候选择了使用MFC的静态库时,发现点击图片后光标消失不见了。我一开始以为是我代码写错了,到工程里调试很久一直没有解决。后来网上百度是发现,有很多前辈都遇到过这种情况,而且解决方法都已经给出来了。
下面是我稍微整理下的答案。
1:在vc的安装目录里找到拖动需要的光标(查找方法:找到vs的安装目录,在文件夹搜索选项里输入.cur即可),然后复制图标到你的工程,并添加到资源文件中。
2:在重写了CRectTracker的类中的构造函数里添加
extern HCURSOR _afxCursors[10];//引用trckrect.cpp文件中全局光标(静态编译时需要)
xxxxxxxxx()
{
HINSTANCE hInst = AfxGetInstanceHandle();
if (!_afxCursors[0])
_afxCursors[0] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCKNWSE));
if (!_afxCursors[1])
_afxCursors[1] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCKNESW));
if (!_afxCursors[2])
_afxCursors[2] = _afxCursors[0];
if (!_afxCursors[3])
_afxCursors[3] = _afxCursors[1];
if (!_afxCursors[4])
_afxCursors[4] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCKNS));
if (!_afxCursors[5])
_afxCursors[5] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCKWE));
if (!_afxCursors[6])
_afxCursors[6] = _afxCursors[4];
if (!_afxCursors[7])
_afxCursors[7] = _afxCursors[5];
if (!_afxCursors[8])
_afxCursors[8] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCK4WAY));
if (!_afxCursors[9])
_afxCursors[9] = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_TRCK4WAY));
}
即可。
示例代码下载:http://download.csdn.net/detail/qq_23992597/9615706