MFC爲什麼有時候MessageBox會失效

爲什麼有時候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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章