我在自己编写的测试程序中,正确使用了TrackPopupMenu函数,但我移植到一个修改后的程序中去
报如下错误:
error C2664: 'TrackPopupMenu' : cannot convert parameter 4 from 'class CDanUserZhangResult *const ' to 'class CWnd *'
由于我是修改别人的程序,该程序做了一点小加密,因此我不知道它的基类。
该函数如下:
void CDanUserZhangResult::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
CMenu menuPopup; if(menuPopup.CreatePopupMenu())
{
menuPopup.AppendMenu(MF_STRING,ID_MENU_RED,"&Red");
menuPopup.InsertMenu(0,MF_BYPOSITION|MF_STRING,
ID_MENU_GREEN,"&Green");
menuPopup.AppendMenu(MF_SEPARATOR);
menuPopup.AppendMenu(MF_STRING|MF_CHECKED,
ID_MENU_BLUE,"&Blue");
menuPopup.AppendMenu(MF_STRING|MF_MENUBARBREAK,
ID_MENU_YELLOW,"&Yellow");
menuPopup.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
}
报如下错误:
error C2664: 'TrackPopupMenu' : cannot convert parameter 4 from 'class CDanUserZhangResult *const ' to 'class CWnd *'
由于我是修改别人的程序,该程序做了一点小加密,因此我不知道它的基类。
该函数如下:
void CDanUserZhangResult::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
CMenu menuPopup; if(menuPopup.CreatePopupMenu())
{
menuPopup.AppendMenu(MF_STRING,ID_MENU_RED,"&Red");
menuPopup.InsertMenu(0,MF_BYPOSITION|MF_STRING,
ID_MENU_GREEN,"&Green");
menuPopup.AppendMenu(MF_SEPARATOR);
menuPopup.AppendMenu(MF_STRING|MF_CHECKED,
ID_MENU_BLUE,"&Blue");
menuPopup.AppendMenu(MF_STRING|MF_MENUBARBREAK,
ID_MENU_YELLOW,"&Yellow");
menuPopup.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
}
解决方案 »
- mfc类 封装成dll
- mfc 如何不弹出选择连接数据源的对话框
- 请教高人。。。关于 CRITICAL_SECTION 是局部变量的问题
- 服务器使用IO模型时,最好用两个线程,还是用一个线程?
- VC下如何将DBF(FoxPro数据库)文件转换成Access数据库?
- 我做了一个基于MFC的程序,现在想把它做成ActiveX控件,可以在 Web 中运行,就像是整个程序嵌入到网页中一样,请问有没有直接的方法可以
- 50分急问: 关于 VC 6 项目移植到 VC.NET 后出的问题
- 参数的传递的问题
- 怎样用“回车键”把控件焦点移到下一个上
- 各位兄台,请问在多文档程序中,如何更改背景为位图啊。
- 为什么不能创建excel服务
- 请问一个CreateRemoteThread的问题.创建远程线程的时候,远程的宿主进程会出现错误.高手们帮助一下
用p代替this;
CWnd *p = (CDanUserZhangResult *) this;
但系统报:
cannot convert from 'class CDanUserZhangResult *' to 'class CWnd *'
我估计CDanUserZhangResult的基类可能不是CVIEW类。
请问应如何解决。
CCmdTarget类无法实现TrackPopupMenu功能?