1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
/* Jeff Glatt COM in Plain C article #1
error checking omited */
#include <Windows.h>
#include <windef.h>
#include <WinBase.h>
typedef long SetStringPtr(IExample*, char *);
typedef long GetStringPtr(IExample*, char *, long);
typedef struct {
SetStringPtr *SetString;
GetStringPtr *GetString;
} IExampleVtbl;
typedef struct {
IExampleVtbl *lpVtbl;
DWORD count;
char buffer[80];
} IExample;
long SetString(IExample *this, char * str)
{
return 0;
}
long GetString(IExample *this, char *buffer, long length)
{
return 0;
}
int main(int argc, char **argv)
{
static const IExampleVtbl IExample_Vtbl = { SetString, GetString };
IExample *example;
char *buffer;
example = (IExample *)GlobalAlloc(GMEM_FIXED, sizeof(IExample));
buffer = (char *)GlobalAlloc(GMEM_FIXED, 255);
example->lpVtbl = &IExample_Vtbl;
example->count = 0;
example->buffer[0] = 0;
long value1 = example->lpVtbl->SetString(example, "Some Texte");
long value2 = example->lpVtbl->GetString(example, buffer, 255);
return 0;
} |
Partager