我想我的問題對於那些花時間處理Win32 API的人來說相對容易。註冊窗口類
所以我的問題是:
初始化一個WNDCLASSEX實例後,我們需要使用「RegisterClassEx」函數「注冊」它,爲什麼?我們爲什麼這樣做?這個註冊是什麼意思,以及在什麼情況下我需要註冊的東西?
我想我的問題對於那些花時間處理Win32 API的人來說相對容易。註冊窗口類
所以我的問題是:
初始化一個WNDCLASSEX實例後,我們需要使用「RegisterClassEx」函數「注冊」它,爲什麼?我們爲什麼這樣做?這個註冊是什麼意思,以及在什麼情況下我需要註冊的東西?
由RegisterClassEx
返回的ATOM
唯一標識您的「窗口類」,然後可以在其他Windows API中引用該窗口類。 [MSDN]
實際上,它是一個散列,以減少每次創建或查找窗口時處理的數據量。這也意味着可以輕鬆創建和識別具有相同功能的多個窗口。
我正在解決上述的實際問題。 Hans Passant的answer正確地解釋了這是爲C. Further MSDN example提供的OO類概念。
單詞類在函數名中是重要的。當您使用面向對象的語言(如C++,Delphi,Java或C#等)編寫代碼時,則使用類關鍵字創建具有行爲的對象。但是winapi被設計爲使用C語言,一種沒有這種功能的語言。 RegisterClassEx()函數是對它的一種模擬,它可以讓你創建一個窗口,從一個已命名的類「派生」它的行爲,你可以覆蓋的行爲。使用該類名稱創建的每個窗口都具有相同的行爲。
您傳遞的WNDCLASSEX結構給出了一個窗口的默認行爲。這種結構的最重要的成員是:
即使您不打算重新使用窗口,Windows也要求您調用RegisterClassEx()。這是迄今爲止您自己的代碼中最常用的函數。直到你編寫一個實現控件的庫,其他代碼可以使用的窗口,你纔會開始真正利用它。像「編輯」一樣。
感謝您的回答! – RiskX 2012-08-04 13:00:27