MessageMap - Funktionszeiger - VS2008 C++
Von: Claudia Maier (sonne@discardmail.com) [Profil]
Datum: 11.07.2009 10:55
Message-ID: <b15cf679-1da8-4e82-973e-3dc6e61f846a@32g2000yqj.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
Datum: 11.07.2009 10:55
Message-ID: <b15cf679-1da8-4e82-973e-3dc6e61f846a@32g2000yqj.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
Hallo,
ich benötige eine MessageMap.
Wer kann mir hier behilflich sein?
Also hier hänge ich.
http://www1.minpic.de/bild_anzeigen.php?id=78988&key=42868607&ende
Error 1 error C2440: '=' : cannot convert from 'void
(__thiscall
CRMessageMapTest::* )(void)' to 'PFNVOID'
c:\messagemap\rmessagemap\rmessagemap\rmessagemaptest.cpp
58 RMessageMap
Ist doch das gleiche, oder?
PFNVOID m_func;
void *m_func_test;
Was müsste ich tun, wenn ich das benötige?
Funktion(en) double pMyFunc (int v1, float v2, double
v3,
CString v4, char v5)
Was wird da mit der 'schnellen' Schreibweise gemeint?
asdispatch[] =
{
1, &CRMessageTest::func1,
2, &CRMessageTest::func2,
Geht leider auch nicht.
Danke für Eure Hilfe.
Grüße Claudia Maier
H
#pragma once
//typedef void (*PFNVOID)(void);
typedef void (*PFNVOID)();
class CRMessageMapTest
{
private:
struct S_MYTAB
{
int m_Id;
PFNVOID m_func;
void *m_func_test;
};
S_MYTAB asdispatch[4];
public:
CRMessageMapTest(void);
~CRMessageMapTest(void);
void func1(void);
void func2(void);
void func3(void);
void func4(void);
void Start(void);
void Init(void);
};
CPP
#include "StdAfx.h"
#include "RMessageMapTest.h"
CRMessageMapTest::CRMessageMapTest(void)
{
}
CRMessageMapTest::~CRMessageMapTest(void)
{
}
void CRMessageMapTest::func1(void)
{
AfxMessageBox("M 1");
}
void CRMessageMapTest::func2(void)
{
AfxMessageBox("M 2");
}
void CRMessageMapTest::func3(void)
{
AfxMessageBox("M 3");
}
void CRMessageMapTest::func4(void)
{
AfxMessageBox("M 4");
}
void CRMessageMapTest::Start(void)
{
int iId;
iId = 3;
for ( int i=0; i<sizeof(asdispatch)/sizeof(asdispatch[0]); ++i )
{
if ( asdispatch[i].m_Id == iId )
{
asdispatch[i].m_func();
break;
}
}
}
void CRMessageMapTest::Init(void)
{
// ** Wie würde die 'schnelle' Schreibweise gehen?
/* asdispatch[] =
{
1, &CRMessageTest::func1,
2, &CRMessageTest::func2,
3, &CRMessageTest::func3,
4, &CRMessageTest::func4
} */
asdispatch[0].m_func = &CRMessageMapTest::func1;
/* asdispatch[1].m_func = &CRMessageMapTest::func2;
asdispatch[2].m_func = &CRMessageMapTest::func3;
asdispatch[3].m_func = &CRMessageMapTest::func4; */
// asdispatch[0].m_func_test = &CRMessageMapTest::func1;
/* asdispatch[1].m_func_test = &CRMessageMapTest::func2;
asdispatch[2].m_func_test = &CRMessageMapTest::func3;
asdispatch[3].m_func_test = &CRMessageMapTest::func4; */
asdispatch[0].m_Id = 1;
asdispatch[1].m_Id = 2;
asdispatch[2].m_Id = 3;
asdispatch[3].m_Id = 4;
[ Auf dieses Posting antworten ]Antworten
- Florian Weimer (12.07.2009 23:10)
- Thomas Maeder (14.07.2009 17:36)
- Mario Schunda (14.07.2009 22:00)
