【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解
本篇作為Windows API 系列文章的第一篇,將簡(jiǎn)要的講解一下什么是Windows API,Windows API能做些什么,并且盡可能講解一些新出現(xiàn)的專有名詞;本系列博文幾乎沒有難啃的“專業(yè)術(shù)語”,盡量讓讀者能夠看明白文章所述內(nèi)容,是本系列博文的核心宗旨之一。
讀本系列博文的讀者必須具備以下的知識(shí)儲(chǔ)備:
- C/C++語言基礎(chǔ)語法及了解面向?qū)ο蟾拍?/li>
以上列出的這一個(gè)點(diǎn)是最核心的知識(shí)儲(chǔ)備,因?yàn)楸鞠盗胁┪膶?huì)使用C/C++語言編寫的程序作為示例演示W(wǎng)indows API 的效果;使用C/C++ 語言編寫Windows應(yīng)用程序我個(gè)人認(rèn)為是最佳的一種方式,在性能和發(fā)掘Windows特性上,我個(gè)人認(rèn)為是首選!
在此如果是編程新手,可以聽一下這一段建議:當(dāng)你學(xué)習(xí)第一門語言后,例如C語言,發(fā)現(xiàn)自己并不能做出什么東西,這個(gè)時(shí)候千萬別產(chǎn)生挫敗感!并不是你笨,學(xué)了C語言就不會(huì)做東西,在相同的知識(shí)寬度面前大家都一樣,這個(gè)時(shí)候就需要去涉及其它擴(kuò)展性知識(shí),如果你是想做Windows程序的開發(fā),那么就可能需要了解Windows API,擴(kuò)寬你的知識(shí)寬度,當(dāng)擁有了能夠用做出產(chǎn)品的知識(shí)后,你的產(chǎn)品就會(huì)水到渠成了!
Windows API是什么?
首先從API開始理解,API全稱為 Application Programming Interface ;Application Programming 可譯為 應(yīng)用程序,其中的 interface 為接口的意思。那么中文名即為 應(yīng)用程序接口。
那么什么是應(yīng)用程序接口呢?我們舉個(gè)例子說明一下情況;應(yīng)用程序接口可以比作為快遞的領(lǐng)取,你不需要知道快遞從發(fā)送到你收到之間發(fā)生的過程,你只需要在快遞到達(dá)的時(shí)候去領(lǐng)取即可;此時(shí)領(lǐng)取快遞的地點(diǎn)就相當(dāng)于一個(gè)接口,你通過這個(gè)接口獲取你想要的信息或者是資源,這個(gè)接口也只會(huì)返回信息或者資源,并不會(huì)得到額外的東西。這就是一個(gè)接口的定義,屏蔽了其中復(fù)雜的過程,你是用這個(gè)接口,那么就直接獲取到相應(yīng)的信息。
知道了接口的作用,那么Windows API——Windows 應(yīng)用程序接口就比較容易理解了,Windows是Windows系統(tǒng),也是一個(gè)應(yīng)用程序,Windows 提供了不同的服務(wù),這些服務(wù)通過一些特定的方式進(jìn)行調(diào)用、使用;這些服務(wù)可能是 開啟一個(gè)窗口、打開一個(gè)應(yīng)用程序、通過一個(gè)方法設(shè)置系統(tǒng)的休眠時(shí)間等;這些不同的服務(wù),做成了接口的方式使用,那么Windows API 也就知道是干什么用的了。
知道了Windows API 為調(diào)用Windows 服務(wù)的接口,那么現(xiàn)在嘗試一下使用Windows API 創(chuàng)建幾個(gè)對(duì)話框。
Windows API 可以查看 Windows API 文檔;在Windows API 文檔中,查找 MessageBox 即可找到 MessageBox 方法的具體使用方法;通過微軟官方API文檔參數(shù)說明得知 MessageBox 的功能簡(jiǎn)介如下:
“顯示一個(gè)模式對(duì)話框,該對(duì)話框包含系統(tǒng)圖標(biāo),一組按鈕以及特定于應(yīng)用程序的簡(jiǎn)短消息,例如狀態(tài)或錯(cuò)誤信息。該消息框返回一個(gè)整數(shù)值,該整數(shù)值指示用戶單擊了哪個(gè)按鈕。”
從功能簡(jiǎn)介上得知,對(duì)話框可以包含系統(tǒng)圖標(biāo)、特定的短消息、錯(cuò)誤消息;消息框返回一個(gè)整數(shù)值,判斷用戶點(diǎn)擊的按鈕,以便于開發(fā)者進(jìn)行下一步操作。
查看語法:
int MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType );參數(shù)說明:
hWnd
類型為 HWND (HWND類型為句柄類型,句柄:句柄為你需要操作的對(duì)象的指向、或說為指針,它就像一個(gè)鍋的手柄一樣,你通過手柄就可以拿起來這個(gè)鍋,它的英文為HANDLE;在本節(jié)中,我們并不需要指向什么對(duì)象,只需要給一個(gè)NULL就ok,在此并不會(huì)過多解釋句柄。)
hWnd 參數(shù)的簡(jiǎn)單說明為:要?jiǎng)?chuàng)建的消息框的所有者窗口的句柄。如果此參數(shù)為空,則消息框沒有所有者窗口。
通過參數(shù)的簡(jiǎn)單說明,那么我們可以得到信息:消息窗口可以指定一個(gè)窗口的所有者,也可以用面向?qū)ο蟮闹R(shí)點(diǎn)來理解,那就是指定一個(gè)對(duì)象為父類,父窗口,如果參數(shù)為NULL,那么就表示不指定父窗口。
lpText
類型為 LPCTSTR :是一個(gè)指向字符串的指針,參考百科說明,還是說的比較好的:LPCTSTR就表示一個(gè)指向const對(duì)象的指針。
lpText參數(shù)的簡(jiǎn)單說明為:要顯示的消息文本,如果字符串由多行組成,則可以在每行之間使用回車和 / 或換行符分隔行。
通過參數(shù)的簡(jiǎn)單說明,那么我們可以得到信息:LPCTSTR 為需要顯示的消息文本。
lpCaption
類型:與lpText一致。
lpCaption對(duì)話框標(biāo)題。如果此參數(shù)為空,則默認(rèn)標(biāo)題為Error。
通過參數(shù)的簡(jiǎn)單說明,那么我們可以得到信息:lpCaption 為需要顯示的消息文本。基本使用規(guī)則跟 lpText 類似。
uType
類型為:UINT 無符號(hào)整型
對(duì)話框的內(nèi)容和行為。此參數(shù)可以是來自以下標(biāo)志組的標(biāo)志的組合。
其實(shí)對(duì)于 uType 這個(gè)參數(shù)信息點(diǎn)可能并不算多,官方在其中有做補(bǔ)充:
要指示消息框中顯示的按鈕,請(qǐng)指定以下值之一。
以上的特定標(biāo)志組按鈕并不是全部,更多請(qǐng)查看微軟官方文檔 MessageBox說明
在文檔中,uType 的參數(shù)做出了補(bǔ)充:
通過以上信息,似乎明白了在使用Windows軟件中彈出的對(duì)話框的圖標(biāo)怎么設(shè)置了。
返回值如下
當(dāng)這個(gè)窗口被點(diǎn)擊,或者關(guān)閉時(shí),將會(huì)有一個(gè)返回值。
官方解釋如下:
如果一個(gè)消息框有一個(gè)取消按鈕,則該函數(shù)返回IDCANCEL如果或者ESC鍵被按下或值取消按鈕被選擇。如果消息框沒有“
取消”按鈕,則按ESC無效。 如果函數(shù)失敗,則返回值為零。
當(dāng)函數(shù)成功調(diào)用,返回如下值:
那么我們現(xiàn)在就寫個(gè)例子吧,嘗試一下一個(gè)對(duì)話框的生成!
代碼如下:
從以上代碼中,我們引入了 windows.h 頭文件;有些看了文檔同學(xué)可能知道,在微軟文檔中,MessageBox 是實(shí)現(xiàn)在 winuser.h 頭文件中,為什么使用Windows.h 頭文件呢?
因?yàn)?windows.h 頭文件包含了 winuser.h,所以直接使用 winuser.h 就可以了。
在入口函數(shù)內(nèi),第一行我們指定了父窗體為空NULL,要顯示的文字是 “Hello, CSDN!2020!” ,標(biāo)題是 “Hi”,在組合樣式中使用的樣式是補(bǔ)充的樣式 MB_ICONSTOP,應(yīng)該為下圖示樣:
我們編譯后運(yùn)行程序查看效果:
程序按照正確的方式運(yùn)行了,不過這個(gè)叉不是很好,我們換一個(gè) MB_ICONASTERISK:
結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【新手宝典】一篇博文带萌新建站并了解建站
- 下一篇: 【二】Windows API 零门槛编程