如何改变CView类或其它类在spy++下察看的类的名称
我们一般从父类继承的类,当用spy++察看时,会发现它的类不是我们所定义的类的名字。例如,我从CButton继承了一个类CMyButton,用spy++察看时发现使用CMyButton类的按钮的类仍然是CButton,从CView类继承的在debug下的编译版本用spy++看是AfxFrameOrView42d,请问,如何改变它们。
从侯捷的书中看到了如何改变CMainFrame类:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
static LPCSTR classname=NULL;
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
if(classname==NULL)
{
WNDCLASS wndcls;
::GetClassInfo(AfxGetInstanceHandle(),cs.lpszClass,&wndcls);
wndcls.lpszClassName ="MYCLASS";
wndcls.hIcon =AfxGetApp()->LoadIcon(IDR_MAINFRAME) ;
VERIFY(AfxRegisterClass(&wndcls));
classname=wndcls.lpszClassName;
}
cs.lpszClass =classname;
return TRUE;
}
在spy++下察看是MYCLASS
可是当我用类似的代码在CView的PreCreate改变CXXXView类时,发现VERIFY(AfxRegisterClass(&wndcls));总是无法成功,即在除了CMainFrame中成功实现外,在CView,CDialog均未成功,why?
请指点。
谢!