サブクラス化について質問があります。
typedef struct 構造体
{
WNDPROC fnSubProc;//親のプロシージャ
・・・
}構造体;
と前もってこの構造体を作っていました。

サブクラス化したときの戻り値である親ウィンドウのアドレスを
構造体 *a;
a = (構造体*)malloc(sizeof(構造体));
SetWindowLong(hWnd,GWL_USERDATA,a);
a->fnSubProc = (WNDPROC)SetWindowLong(hWnd,GWL_WNDPROC,(LONG)SubProc);
といったふうにこの構造体内に入れました。

そして領域の開放は、SubProc内のWM_DESTROYにて、
構造体 *b;
b = (MYDATA *)GetWindowLong(hWnd,GWL_USERDATA);
free(b);
return 0;
と開放処理を入れました。

これでとりあえずは動いていました・・・、終了処理以外。
エラーの原因は、WM_DESTROYした後にもSubProcが来ていて、
既に消した構造体を参照しようとしているからだと思うのですが
WM_DESTROY以降に来るメッセージがわかりません。
それにこの方法自体してはいけないのかもわかりません。
長くなりましたが、どなたか教えてもらえないでしょうか。