有用SDK自绘控件经验的来,关于SetWindowLong窗口子类的有关问题!

有用SDK自绘控件经验的来,关于SetWindowLong窗口子类的问题!!!!!???
用SetWindowLong,为按钮设置一个新的窗口过程。
其中,SetWindowLong需要一个新窗口过程的地址,而我把整个自绘按钮封装成了一个按钮类,窗口过程函数也当然再其中。

SetWindowLong需要的窗口过程地址,NewProc是个类的成员函数时,给他一个(LONG)NewProc是不行的,类型无法强制转换。
即使强行给他地址,也是行不通的,因为类成员函数具有this参数,不可能和窗口过程配得上
给他地址的办法倒是有一个:static,静态的窗口过程函数。这下编译通过了,可问题来了:
1.如果一个程序中要用这个按钮类创建多个按钮,那么共用一个静态函数,怎样区分当前处理的到底是哪一个对象,这是个问题;
2.新窗口过程中要用到一些标记、数据,这些必须是每个对象自己所有的,也就是不能用static 。如果不声明为static,编译无法通过,静态函数里不能使用非静态数据。如果声明为static,那多个按钮对象公用一个标记?显然是不可能的


这个问题肿么处理呢,各位有没有做过类似的事情的,或者有什么高招?

------解决方案--------------------
用SetWindowLong把类的this指针传进去
如果不行的话,传句柄,使用时,判断句柄
------解决方案--------------------
可以看看MFC是怎么做的