1.1.8
gh0st3.6\gh0st\cj60lib\cj60lib\cjpagerctrl.cpp(75): error C2440: “static_cast”: 无法从“BOOL (__thiscall CCJPagerCtrl::* )(NMPGSCROLL *,LRESULT *)”转换为“BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)”
1> 在匹配目标类型的范围内没有具有该名称的函数
gh0st3.6\gh0st\cj60lib\cj60lib\cjpagerctrl.cpp(76): error C2440: “static_cast”: 无法从“BOOL (__thiscall CCJPagerCtrl::* )(NMPGCALCSIZE *,LRESULT *)”转换为“BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)”
1> 在匹配目标类型的范围内没有具有该名称的函数
这两处的错误都是一样的,都是同一种参数类型不匹配。定位信息:
ON_NOTIFY_REFLECT_EX(PGN_SCROLL, OnPagerScroll)
ON_NOTIFY_REFLECT_EX(PGN_CALCSIZE, OnPagerCalcSize)
可以看出他们所对应的函数分别是OnPagerScroll和OnPagerCalcSize。直接在上面按F12(右键–跳转到定义处)就跳转到函数定义出了。
E:\Programming\VS2010\Gh0st3.6\gh0st\CJ60Lib\CJ60Lib\CJPagerCtrl.cpp
BOOL CCJPagerCtrl::OnPagerScroll(NMPGSCROLL* pNMPGScroll, LRESULT* pResult)
{
*pResult = 0;
return FALSE; // Let parent handle message
}
修改如下:
BOOL CCJPagerCtrl::OnPagerScroll(NMHDR* pNMPGScroll, LRESULT* pResult)
{
*pResult = 0;
return FALSE; // Let parent handle message
}
===================================================
BOOL CCJPagerCtrl::OnPagerCalcSize(NMPGCALCSIZE* pNMPGCalcSize, LRESULT* pResult)
{
switch(pNMPGCalcSize->dwFlag)
修改如下:
BOOL CCJPagerCtrl::OnPagerCalcSize(NMHDR* pNMHDRPGCalcSize, LRESULT* pResult)
{
NMPGCALCSIZE *pNMPGCalcSize = (NMPGCALCSIZE *)pNMHDRPGCalcSize;
switch(pNMPGCalcSize->dwFlag)
===================================================
接着修改头文件中申明的参数类型
E:\Programming\VS2010\Gh0st3.6\gh0st\CJ60Lib\Include\CJPagerCtrl.h
virtual BOOL OnPagerScroll(NMPGSCROLL* pNMPGScroll, LRESULT * pResult);
virtual BOOL OnPagerCalcSize(NMPGCALCSIZE * pNMPGCalcSize, LRESULT* pResult);
修改如下:
virtual BOOL OnPagerScroll(NMPGSCROLL* pNMPGScroll, LRESULT * pResult);
virtual BOOL OnPagerCalcSize(NMHDR* pNMHDRPGCalcSize, LRESULT* pResult);
1.2 编译CJ60Lib
首先还是修改字符集为ANSI,默然不为WChar_t。这步是编译Gh0st每一个项目都需要做的,以后的操作中不再提起,请注意。如果提示A函数和W函数重定义,参数冲突等,都是这个问题,改下项目属性就能解决了。
这个直接编译就能过了。用VS2010编译函数很多安全函数的警告,这个不用管他,想修改也是可以的。还有一个_WIN32_WINNT宏未定义的警告,如非必要,我就不加上去了,尽量的保持和原版的相同。要加的话,直接加在每个项目的StdAfx.h里面。格式:#define _WIN32_WINNT 0×0500 这里的参数含义可以参看MSDN,后面有一处修改必须加,也会再次提到。