時間過得很快,一轉眼,離上次發文章,又很久過去了,最近又忙着公司的項目,好久沒學習Go的windows開發了。趁着雙休日,再來稍微玩下。windows
上次,咱們成功的建立了第一個窗口程序,當時,默認的建立了一個edit類型的窗口,因此,該窗口本身就是一個edit的窗口。今天,不打算這樣作了,得來點正常的了,就是建立一個原始的窗口,啥都不是,就是一個窗口,而後,再在這個窗口裏面建立一個子窗口,子窗口有不少種,今天就用Button(按鈕)窗口。開始動手吧~~api
1、建立原始窗口函數
關鍵代碼:學習
對比上次建立的窗口,咱們發現第102行,與上次不太同樣,上次是_TEXT("edit"),此次換成了_TEXT("test"),沒錯。上次的是建立一個edit的窗口,而此次是自定義的原始窗口,你應該已經猜到了此次的窗口咱們取名叫test。ui
既然,有了test,那麼test這裏只是個字符串名稱呀,因此,咱們得先註冊這個窗口對象。如何註冊,咱們把註冊過程封裝成了一個方法。atom
第一行,咱們把消息處理過程方法,轉換成了一個指針,在 18行賦值給WNDCLASSEX結構體。其他的都是一些初始化操做,例如初始化鼠標,背景,窗體大小等等。還有在第23行是否是看到了test,咱們給註冊的這個窗口名字叫test,這樣在以前那個建立窗口的代碼片斷中就能成功調用這個test了。其它參數具體參加win32 api。spa
最後,在main方法中調用這個註冊窗體方法。指針
2、建立子窗體code
建立子窗體其實和建立窗體一個樣,沒什麼特別,只不過將它的實例句柄指向父窗口。這裏咱們要建立一個按鈕,爲了方便起見,也稍微封裝下,添加個添加按鈕的方法:對象
注意看21行,這裏是button,明白了吧?和你想的同樣,確實這麼簡單,你要建立什麼窗體就指定什麼。另外注意第28行,parent,是的,指定該窗體的父窗體。該變量經過方法參數傳來,是一個HWND類型的變量。那麼,咱們該在什麼時候使用該方法添加按鈕呢?繼續往下看。。。。。。
3、添加按鈕
什麼時候添加按鈕,通常的作法就是當父窗體建立的時候就添加,這裏就須要用到WM_CREATE消息了,咱們在消息處理方法中,監聽該消息,而後若是接受到該消息,就執行addButton方法,添加按鈕到父窗體中。
細心的同窗可能會發現,此次的消息處理方法的最後和上次不太同樣,是的,此次最後調用了DefWindowProc函數,該函數調用缺省的窗口過程來爲應用程序沒有處理的任何窗口消息提供缺省的處理。該函數確保每個消息獲得處理。
最後運行結果以下:
今天就到這裏,下次將爲按鈕添加事件處理。。。。。。