爲什麼有時候MessageBox會失效
- 不知道什麼網絡教程教會了我們,調試的時候來一句
MessageBox("我是誰我在哪裏")
跳出提示框,很方便,結果呢,這種方法有時候靈,有時候不靈,有時候報錯,說缺參數,有時候又說參數太多,真的是有毒,研究了一下,大概知道是什麼問題了。很多人其實不知道有兩個函數,名字都叫MessageBox
,是不是有毒,的確是。
目錄
我是 windows API 🐷
先附上官方的申明:https://docs.microsoft.com/zh-cn/windows/desktop/api/winuser/nf-winuser-messagebox
- 作爲windows api使用的時候就非常方便,無論在哪裏,都可以使用,只要加上頭文件Windows.h(其實他在winuser.h裏面,不過只要包含大佬就可以了),函數的原型是這樣的:
int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
- 熟悉的windows api 風格,顯然,需要輸入四個參數,一個都不能省略(第一哥輸入null則不依賴任何窗口,自己就是爸爸,其實就是個非模態對話框)。
我是 CWnd 成員函數CWnd::MessageBox😁
這個就比較尷尬了,誰都想不到他還能使CWnd的成員函數🤮,好吧,這就是你用的最爽的那個函數,MessageBox(_T("我好爽"))
,爲什麼可以這樣用呢,原因很明顯,作爲成員函數,編譯器默認對成員函數的調用方式爲_thiscall
,_thiscall
的特點是默認傳入this指針的,顯然,有了this指針,就可以定位到當前的窗口的句柄,也就沒有那麼多參數的要求了。
忘記說了,還有一個弟弟AfxMessageBox
- 一下子又非常尷尬了,有時候你並不想
跟斗雲
https://zhidao.baidu.com/question/89095337.html
https://bbs.csdn.net/topics/340113964