Mulla on funktio
int gMain::pvfCreateWindow(int Width, int Height, HINSTANCE hInst)
jossa on rivi
this->wc.lpfnWndProc = (WNDPROC)this->MsgProc;
. wc on WNDCLASSEX. Tuo ei jostain syystä toimi tuo rivi, tulee tällainen virhe:
error C2440: 'type cast' : cannot convert from '' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
Ja MsgProc:n esittely on tällainen:
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
Mikä neuvoksi?
Et voi käyttää jäsenfunktiota (metodia) ikkunan viestinkäsittelijänä.
Joskus kauan sitten oli sama ongelma, ja tämän ratkaisun löysin. Toiminut minulla jo pitemmän aikaa.
Headerissa:
class gMain { public: int pvfCreateWindow(...); private: static LRESULT WINAPI MsgProc(HWND hWnd, ...);
pvfCreateWindow funktiossa:
int gMain::pvfCreateWindow(...) { ... wc.lpfnWndProc = MsgProc; ... }
Tuo Masfonosin ratkaisu on mainittu tuolla Markuksen antamalla saitilla kohdassa "Simple Fix for Obvious Solution". Tuo ei kuitenkaan ole sopiva kaikille tapauksille.
Yksi hyvä ratkaisu löytyy kohdasta "Per-Window Data". Jos tekee esim. säikeitä käyttäviä ohjelmia (jolloin tulee sama ongelma eteen), homma hoituu vielä tuotakin helpommin koska CreateThreadille voidaan antaa suoraan parametriksi käyttäjän määrittelemä arvo jonka Windows sitten työntää thread-callbackille.
Aihe on jo aika vanha, joten et voi enää vastata siihen.