error C2065: “m_pStrategyDlg”: 未声明的标识符

itpstocke 2014-10-28 03:19:54
新手请教个问题,网上查了半天也没找到原因。
TESTStrategy.h里定义一个对话框的(TestItpDialog* m_pStrategyDlg;),但在TESTStrategy.cpp里面Strategy_CreatWindow函数使用该变量时总是提示“error C2065: “m_pStrategyDlg”: 未声明的标识符”。
TESTSTRATEGY.H代码:
#pragma once
#include "strategybase.h"
#include "list"
#include <vector>
#include "map"
#include "TestItpDialog.h"//TestItpDialog 类的头文件

using std::vector;
using std::list;
using std::map;

const int MAX_BAR_SIZE = 1000;

class TestStrategy :
public CStrategyBase
{
public:
TestStrategy(void);
~TestStrategy(void);

virtual int Strategy_OnStart(IiTPInterface* piTP);
virtual int Strategy_OnStop(IiTPInterface* piTP);
virtual int Strategy_CreatWindow(HWND hWnd,HWND hWndParent);
virtual int Strategy_DestroyWindow(HWND hWnd);

private:

TestItpDialog* m_pStrategyDlg; // 策略窗口

};

TESTStrategy.cpp里
int Strategy_CreatWindow(HWND hWnd,HWND hWndParent)
{
// 创建策略窗口
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_pStrategyDlg = new TestTipDialog;
if (NULL == m_pStrategyDlg)
{
ASSERT(FALSE);
return -1;
}
if (!::IsWindow(m_pStrategyDlg->GetSafeHwnd()) && !m_pStrategyDlg->Create(TestItpDialog::IDD))
{
return -1;
}
m_pStrategyDlg->ModifyStyleEx(WS_POPUP | WS_BORDER | WS_DLGFRAME,WS_CHILD);
hWnd = m_pStrategyDlg->GetSafeHwnd();
return 0;
}

...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
铖邑 2014-10-28
  • 打赏
  • 举报
回复
int CStrategyBase::Strategy_CreatWindow(HWND hWnd,HWND hWndParent)
itpstocke 2014-10-28
  • 打赏
  • 举报
回复
TestItpDialog.h里的类是TestItpDialog。另外回复xpdavis 兄,确实是没有该成员函数,我把名字搞错了,应该是int Strategy_CreateWindow()。但修改后问题依然,就是在CreateWindow函数中不认变量m_pStrategyDlg。我做过测试,把CreateWindow函数注释掉,在TestStrategy类的构造函数中赋值为NULL,编译都没有问题。
ouyh12345 2014-10-28
  • 打赏
  • 举报
回复
看看TestItpDialog.h里的类是什么名字,CTestItpDialog?
itpstocke 2014-10-28
  • 打赏
  • 举报
回复
你好,int Strategy_CreatWindow(HWND hWnd,HWND hWndParent)是CStrategyBase的成员函数。另外你怎么看出其不是CStrategyBase的成员函数?
铖邑 2014-10-28
  • 打赏
  • 举报
回复
int Strategy_CreatWindow(HWND hWnd,HWND hWndParent) 不是CStrategyBase的成员函数,当然不能访问了
网上下载了emule0.50a-Xtreme8.1-sources源码,声称可以在VS2008下直接编译成功,经我实际测试,系统会报错,其中第一类错误,由于系统中为了兼容VISTA/WIN7,增加了相关定义,而这些定义在XP/WIN2003环境下会报错,共771个错误,如: 错误 2 error C2065: “ITaskbarList3”: 未声明标识符 d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 195 emule 错误 3 error C2146: 语法错误 : 缺少“;”(在标识符“m_thbButtons”的前面) d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 4 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 5 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 6 error C2146: 语法错误 : 缺少“;”(在标识符“m_currentTBP_state”的前面) d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 7 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 8 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 10 error C2065: “ITaskbarList3”: 未声明标识符 d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 195 emule ...... 此类错误中,ITaskbarList3是VISTA/WIN7环境下与任务栏相关的变量,只要屏闭掉相关定义就能正常。 除此之外还报有下面 5 个错误(实际引起错误的位置只有两个): 错误 135 error C2059: 语法错误 : “:” d:\eMule\srchybrid\BaseClient.cpp 1603 emule 错误 136 error C2065: “tagName”: 未声明标识符 d:\eMule\srchybrid\BaseClient.cpp 1604 emule 错误 137 error C2228: “.WriteTagToFile”的左边必须有类/结构/联合 d:\eMule\srchybrid\BaseClient.cpp 1604 emule 错误 139 error C2001: 常量中有换行符 d:\eMule\srchybrid\BaseClient.cpp 4832 emule 错误 140 fatal error C1057: 宏展开中遇到意外的文件结束 d:\eMule\srchybrid\BaseClient.cpp 4832 emule 此类错误中,实际上是是两个语法错误,由于太过简单,我与网友都怀疑是作者故意制造的错误,若是完全不懂C++的人,即使拿到源码,编也会报错,从而止步于此。而稍懂C++的人(本人即是此类菜鸟),则可以找出错误之处。 为方便诸多象我一样的初学者,我把修正之后,可以在 XP/WIN2003 +VS2003SP1 环境下直接编译成功的emule0.50a-Xtreme8.1-sources源码发布上来,以便互相学习交流。

65,209

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧