2010-09-03 111 views
5

當我第二次創造一個子窗口,的RegisterClass失敗:類已經存在

if (!::RegisterClass(&hwClass)) 
{ 
    throw std::runtime_error("RegisterClass failed!"); 
} 

它拋出該類已經存在異常。但子窗口類被刪除時,子窗口被銷燬在:

WM_DESTROY: 
{ 
    delete this; //destroy child class 
} 

它的工作原理,如果我評論expect錯誤。這是否意味着我不需要再次註冊課程?

+1

錯誤的評論,應該是/ /破壞窗口對象包裝 – 2010-09-03 19:47:17

回答

5

UnregisterClass documentation,其中規定:

之前調用此函數,應用程序必須銷燬與指定類創建的所有窗口。

指示銷燬窗口不會取消註冊該類。

1

是的,你不應該再次註冊該課程。

這是從MSDN:

所有窗口類,應用程序 寄存器是未註冊的,當它 終止。

更新: 這是有道理的,因爲很多的窗戶可以基於一個窗口類和窗口類創建創建任何窗口之前存在。