如果你要使用原來的(MFC 預設的)那些個視窗類別,但又希望擁有自己定義的一個有
意義的類別名稱,你可以改寫PreCreateWindow 虛擬函式(因為Create 和LoadFrame
的內部都會呼叫它),在其中先利用API 函式GetClassInfo 獲得該類別的一個副本,
更改其類別結構中的lpszClassName 欄位( 甚至更改其hIcon 欄位) , 再以
AfxRegisterClass 重新註冊之,例如:
#0000 #define MY_CLASSNAME "MyClassName"
#0001
#0002 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
#0003 {
#0004 static LPCSTR className = NULL;
#0005
#0006 if (!CFrameWnd::PreCreateWindow(cs))
#0007 return FALSE;
#0008
#0009 if (className==NULL) {
#0010 // One-time class registration
#0011 // The only purpose is to make the class name something
#0012 // meaningful instead of "Afx:0x4d:27:32:hup1hup:hike!"
#0013 //
#0014 WNDCLASS wndcls;
#0015 ::GetClassInfo(AfxGetInstanceHandle(), cs.lpszClass, &wndcls);
#0016 wndcls.lpszClassName = MY_CLASSNAME; <--------(1)
#0017 wndcls.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
#0018 VERIFY(AfxRegisterClass(&wndcls));
#0019 className=TRACEWND_CLASSNAME;   <-----(2)
#0020 }
#0021 cs.lpszClass = className;
#0022
#0023 return TRUE;
#0024 }
(1)和(2)是否应该是一样的,谢谢,是不是写错了