Oh.....you declared it as "FARPROC".
You need to declare InitProc as a pointer to a function that has the same signature (and calling convention) as InitClass.
Read up function pointers here.
Here's a basic example.
Code:
#include <iostream>
using namespace std;
int foo(int a)
{
cout << "foo(" << a << ")" << endl;
return 0;
}//foo
int bar(int a)
{
cout << "bar(" << a << ")" << endl;
return 0;
}//bar
// declare a type that can point to a function that returns int and takes a
// single int parameter
typedef int (*fn_ptr_t)(int);
int main()
{
fn_ptr_t fnptr = NULL;
fnptr = foo; // "fnptr = &foo" is ok too
fnptr(1); // calls foo(1)
fnptr = &bar;
fnptr(2); // calls bar(2)
return 0;
}//main
gg