请看看用VS2008开发MFC程序消息映射的问题 报错信息:static_cast” : 无法从“LRESULT (__thiscall CStockDataRecApp::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”我把 CStockDataRecApp 继承 CWin 报错:未定义基类。该怎么解决?初次写MFC程序,问题多多,谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是你自己加的类?原来向导生成的那个App类哪去了? 向导生成的:// StockDataRec.h : StockDataRec 应用程序的主头文件//#pragma once#ifndef __AFXWIN_H__ #error 在包含用于 PCH 的此文件之前包含“stdafx.h” #endif#include "resource.h" // 主符号//我的股票数据消息从什么位置开始#define MY_StkDataMsg WM_APP + 1// CStockDataRecApp:// 有关此类的实现,请参阅 StockDataRec.cpp//class CStockDataRecApp : public CWin{public: CStockDataRecApp();// 重写public: virtual BOOL InitInstance();// 实现 afx_msg void OnAppAbout(); //股票数据消息处理方法 afx_msg LRESULT MY_StkDataMsgAction(WPARAM wFileType,LPARAM lPara); DECLARE_MESSAGE_MAP()};extern CStockDataRecApp theApp; 不对,生成的代码是如下:// StockDataRec.h : StockDataRec 应用程序的主头文件//#pragma once#ifndef __AFXWIN_H__ #error 在包含用于 PCH 的此文件之前包含“stdafx.h” #endif#include "resource.h" // 主符号//我的股票数据消息从什么位置开始#define MY_StkDataMsg WM_APP + 1// CStockDataRecApp:// 有关此类的实现,请参阅 StockDataRec.cpp//class CStockDataRecApp : public CWinApp{public: CStockDataRecApp();// 重写public: virtual BOOL InitInstance();// 实现 afx_msg void OnAppAbout(); //股票数据消息处理方法 afx_msg LRESULT MY_StkDataMsgAction(WPARAM wFileType,LPARAM lPara); DECLARE_MESSAGE_MAP()};extern CStockDataRecApp theApp; HANDLE hFile = NULL; WIN32_FIND_DATA fd = {0}; _tcscpy(tsTemp, strFolder); _tcscat(tsTemp, _T("*.*")); hFile = ::FindFirstFile(tsTemp, &fd); if(hFile != INVALID_HANDLE_VALUE) { do { if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(_tcscmp(fd.cFileName, _T(".")) == 0 || _tcscmp(fd.cFileName, _T("..")) == 0) { continue; } ... ... }while(::FindNextFile(hFile,&fd));::FindClose(hFile);这段代码可以遍历strFolder目录下的所有文件 VS2005对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2005下编译不通过 a,ON_MESSAGE(message,OnMyMessage); OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM); 如果不符合,则有错误提示: error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)” error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)” b,在VS2005中,OnMyMessage返回值必须为BOOL,且含有一个 UINT 参数指出了命令ID,其形式为:afx_msg BOOL OnMyMessage(UINT);如果不符合,则有错误提示. 如在VS6中,OnMyMessage2的定义为afx_msg BOOL OnViewZoomBar()时亦可正常编译通过,但在VS2005下,有错误提示: error C2440: “static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“BOOL (__thiscall CCmdTarget::* )(UINT)” error C2440: “static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“BOOL (__thiscall CCmdTarget::* )(UINT)” '_L': identifier not found CDatabase::SetLoginTimeout问题 VC++高手请进 关于剪切板的图象问题 方法名的前面是什么? 请问,在SDI程序里,在选择系统菜单中的关闭的时候,如果此时处理的文档有变化,系统会询问是否保存,请问这个具体是怎么处理的? c语言操作网络接口问题? 【【【关于3D虚拟现实和OpenGL】】】,什么是DEM中的插值????? 怎么创建一个弹出式菜单? 如何解决CRichEdit中汉字显示问题!100分 CArray的模板参数如果是指针,如何释放内存? csdn论坛的发帖和回帖时间是不是有问题啊.
//
#pragma once#ifndef __AFXWIN_H__
#error 在包含用于 PCH 的此文件之前包含“stdafx.h”
#endif#include "resource.h" // 主符号//我的股票数据消息从什么位置开始
#define MY_StkDataMsg WM_APP + 1
// CStockDataRecApp:
// 有关此类的实现,请参阅 StockDataRec.cpp
//class CStockDataRecApp : public CWin
{
public:
CStockDataRecApp();
// 重写
public:
virtual BOOL InitInstance();// 实现
afx_msg void OnAppAbout(); //股票数据消息处理方法
afx_msg LRESULT MY_StkDataMsgAction(WPARAM wFileType,LPARAM lPara); DECLARE_MESSAGE_MAP()
};extern CStockDataRecApp theApp;
//
#pragma once#ifndef __AFXWIN_H__
#error 在包含用于 PCH 的此文件之前包含“stdafx.h”
#endif#include "resource.h" // 主符号//我的股票数据消息从什么位置开始
#define MY_StkDataMsg WM_APP + 1
// CStockDataRecApp:
// 有关此类的实现,请参阅 StockDataRec.cpp
//class CStockDataRecApp : public CWinApp
{
public:
CStockDataRecApp();
// 重写
public:
virtual BOOL InitInstance();// 实现
afx_msg void OnAppAbout(); //股票数据消息处理方法
afx_msg LRESULT MY_StkDataMsgAction(WPARAM wFileType,LPARAM lPara); DECLARE_MESSAGE_MAP()
};extern CStockDataRecApp theApp;
WIN32_FIND_DATA fd = {0};
_tcscpy(tsTemp, strFolder);
_tcscat(tsTemp, _T("*.*"));
hFile = ::FindFirstFile(tsTemp, &fd);
if(hFile != INVALID_HANDLE_VALUE)
{
do
{
if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if(_tcscmp(fd.cFileName, _T(".")) == 0 || _tcscmp(fd.cFileName, _T("..")) == 0)
{
continue;
}
...
...
}
while(::FindNextFile(hFile,&fd));
::FindClose(hFile);
这段代码可以遍历strFolder目录下的所有文件
a,ON_MESSAGE(message,OnMyMessage);
OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);
如果不符合,则有错误提示:
error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
error C2440: “static_cast”: 无法从“void (__thiscall CPppView::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
b,在VS2005中,OnMyMessage返回值必须为BOOL,且含有一个 UINT 参数指出了命令ID,其形式为:afx_msg BOOL OnMyMessage(UINT);如果不符合,则有错误提示.
如在VS6中,OnMyMessage2的定义为afx_msg BOOL OnViewZoomBar()时亦可正常编译通过,但在VS2005下,有错误提示:
error C2440: “static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“BOOL (__thiscall CCmdTarget::* )(UINT)”
error C2440: “static_cast”: 无法从“BOOL (__thiscall CMainFrame::* )(void)”转换为“BOOL (__thiscall CCmdTarget::* )(UINT)”