Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类中的计时器方法_C++_Visual Studio 2008 - Fatal编程技术网

C++ 类中的计时器方法

C++ 类中的计时器方法,c++,visual-studio-2008,C++,Visual Studio 2008,首先介绍我的开发环境: OS: Windows. SDK: Microsoft Visual Studio 2008. 今天早些时候,我遇到了在类中定义计时器的问题。我的类是一个Python嵌入模块和一个C++后端接口,我的问题是我需要在Python模块上接收一些时间事件。同样重要的是要注意,这个类只有一个实例 主要问题是,当我使用以下方法定义计时器时: /* Null, 0, mseconds, CALLBACK_METHOD */ SetTimer(NULL, 0, 100, (TIMER

首先介绍我的开发环境:

OS: Windows.
SDK: Microsoft Visual Studio 2008.
今天早些时候,我遇到了在类中定义计时器的问题。我的类是一个Python嵌入模块和一个C++后端接口,我的问题是我需要在Python模块上接收一些时间事件。同样重要的是要注意,这个类只有一个实例

主要问题是,当我使用以下方法定义计时器时:

/* Null, 0, mseconds, CALLBACK_METHOD */
SetTimer(NULL, 0, 100, (TIMERPROC) OnTimer);
在计时器事件(OnTimer)上激活的方法必须是我的类上的静态方法(然后我不能访问该类中的任何非静态方法或变量)

阅读codeproject上的一些代码,我发现:

我有一个类似的实现,但没有行:

void * CSleeperThread::pObject;


这是实现我想要的功能的唯一方法吗?有没有更简单的方法可以让我跳过信息收集过程?

只要这个类只有一个实例,就有一个简单的解决方案:声明类对象,然后在全局对象中存储指向它的指针。例如:

MyClass myObject;
MyClass* self = &myObject;

然后在静态成员中,可以使用self->myMethod()或self->myData引用非静态项。

创建类对象的静态映射:

static std::map<UINT_PTR, CMyClass*> m_CMyClassMap; //declaration
static std::map<UINT_PTR, CMyClass*> m_CMyClassMap; //declaration
CMyClass myClassObj;
CMyClassMap.insert(std::pair<int, CMyClass*>(0, &myClassObj));
int a = m_CMyClassMap[0]->m_someNonStaticMember;