VC 中的訊息處理

2022-03-29 17:57:56 字數 2020 閱讀 7343

messagebox()並沒有什麼多少功能,但是能夠在螢幕上顯示乙個視窗,提出乙個問題,並且等候使用者的輸入。下面是messagebox()的原型:

int messagebox(hwnd hwn,//handle of owner window

lpctstr lptext,//address of text in message box

lpctstr lpcaption,//address of title of message box

uint utype);//style of message box

引數定義如下:

hwnd——這是資訊框連續視窗的控制代碼。目前我們還不能談及視窗控制代碼,因此只能認為它是資訊框的父視窗。在demo2_2.cpp,我們將它設定為空值null,因此使用windows桌面作為父視窗。

lptext——這是乙個包含顯示文字的空值終止字串。

lpcaption——這是乙個包含顯示文字框標題的空值終止字串。

utype——這大概是該簇引數中唯一令人激動的引數了,控制資訊顯示框的各類。

表2.3列出了幾種messagebox()選項(有些刪減)。

表2.3 messagebox()選項

─────────────────────────────────

標誌  描述

─────────────────────────────────

下列設定控制資訊框的一般型別

───────────┬─────────────────────

mb_ok        │資訊框含有乙個按鈕:ok,這是預設值

mb_okcancel     │資訊框含有兩個按鈕:ok和cancel

mb_retrycancel   │資訊框含有兩個按鈕:retry和cancel

mb_yesno      │資訊框含有兩個按鈕:yes和no

mb_yesnocancel   │資訊框含有三個按鈕:yes、no和cancel

mb_abortretryignore│資訊框含有三個按鈕:yes、no和cancel

───────────┴─────────────────────

這一組控制在圖示上新增一點「窮人的多**」

───────────┬─────────────────────

mb_iconexclamation │資訊框顯示乙個驚嘆號圖示

mb_iconinformation │資訊框顯示乙個由圓圈中的小寫字母i構成的圖示

mb_iconquestion   │資訊框顯示乙個問號圖示

mb_iconstop     │資訊框顯示乙個終止符圖示

───────────┴─────────────────────

該標誌組控制預設時高亮的按鈕可以同時使用表2.3中的值進行邏輯或運算,來建立乙個資訊框。一般情況下,只能從每一組中僅使用乙個標誌來進行或運算。

當然,和所有win2 api函式一樣,messagebox()函式返回乙個值業通知程式設計者所發生的事件。但在這個例子中誰關心這個呢?通常情況下,如果資訊框是yes/no提問之類的情況的話,就希望知道這個返回值。表2.4列出了可能的返回值。

表2.4 messagebox()的返回值

─────┬─────────────────────

值  │ 按鈕選擇

─────┼─────────────────────

idabort │abort

idcancel │cancel

idignore │ignore

idno   │no

idok   │ok

idretry │retry

idyes  │yes

─────┴─────────────────────

最後,這個表已經毫無遺漏地列出了所有的返回值,正在已經完成了對我們第乙個windows程式——單擊的逐行分析。

關於c 中的訊息處理函式和vc中的訊息處理函式區別

從vc入門程式設計的,相信大家都很熟悉pretranslatemessage和windowproc兩個函式,前者是預處理windows發給控制項的訊息,後者是處理剩餘的控制項訊息。對於pretranslatemessage函式,一般來說,我們是這樣處理控制項訊息的 bool test pretran...

VC訊息處理之訊息對映

訊息的傳遞與傳送是windows應用程式的核心所在,任何事件的觸發與響應均要通過訊息的作用才能得以完成。在sdk程式設計中,對訊息的獲取與分發主要是 通過訊息迴圈來完成的,而在mfc程式設計中則是通過採取訊息對映的方式對其進行處理的。相比而言,這樣的處理方式要簡單許多,這也是符合物件導向程式設計中盡...

VC中自定義訊息的處理

由於在實際的專案中一直沒用用過自定義訊息完成某功能,所以雖然以前看書了,知道怎麼做但是早還給課本了。今天想實現這樣乙個功能,查了查資料記錄下來。另外vcbase上有個簡單的示例。開始時要明白windows訊息投遞有2種方式 postmessage 和sendmessage的區別主要在於是否等待其他程...