VC++6.0编写的ocx控件,增加参数后调用方一直报参数数目不对的解决办法
错误的做法:手动编辑映射代码。。。
BEGIN_DISPATCH_MAP(CAUTOCTSCtrl, COleControl)
//{{AFX_DISPATCH_MAP(CAUTOCTSCtrl)
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()
原因:应该是VC6.0的漏洞
正确姿势:删除旧方法,Ctrl+W使用向导增加,如图:
被这个环境漏洞坑了一上午(添加方法界面中,直接写外部名称即可)。
一些以其他的问题及解决办法,记录在此:
1、Ctrl+W打开向导界面提示:Parsing error:Expected"afx_msg".Input Line:"DECLARE_MESSAGE_MAP()"
解决办法:将自己定义的消息写到外面,如
public:
//{{AFX_MSG(CLock_imageDoc)
afx_msg void OnStart();
afx_msg void Onsavefile();
afx_msg void OnStop();
afx_msg void OnFileSaveAs();
afx_msg void OnFileSave();
afx_msg void OnOriginalimage();
afx_msg void Onopenfile();
//}}AFX_MSG
afx_msg void OnmyMessage(); ///自己添加的消息对应的消息响应(放在//}}AFX_MSG的外面才行)
DECLARE_MESSAGE_MAP()
2、编译时提示:no compile tool is associated with the file extension
解决办法:你当前的文档是.h文档,切到.cpp文档即可(环境认为头文件是不参与编译的)。
3、链接提示:error LNK2001: unresolved external symbol __imp__PathRemoveFileSpecA@4
解决办法:工程->设置->链接页面,对象/库模块中添加 shlwapi.lib