MSG 商品名稱:味精,味素。因味精起源於小麥,俗稱麩酸鈉、穀氨酸鈉。 英文名稱:Monosodium L-glutamate。簡寫:MSG 性狀:味精是無色至白色的柱狀結晶或白色的結晶性粉末。 在Windows程式中,訊息是由MSG結構體來表示的。MSG結構體的定義如下(參見MSDN): typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; 該結構體中各成員變數的含義如下: 第一個成員變數hwnd表示訊息所屬的視窗。我們通常開發的程式都是視窗應用程式,一個訊息一般都是與某個視窗相關聯的。例如,在某個活動視窗中按下滑鼠左鍵,產生的按鍵訊息就是發給該視窗的。在Windows程式中,用HWND型別的變數來標識視窗。 第二個成員變數message指定了訊息的識別符號。在Windows中,訊息是由一個數值來表示的,不同的訊息對應不同的數值。但是由於數值不便於記憶,所以Windows將訊息對應的數值定義為WM_XXX宏(WM是Window Message的縮寫)的形式,XXX對應某種訊息的英文拼寫的大寫形式。例如,滑鼠左鍵按下訊息是WM_LBUTTONDOWN,鍵盤按下訊息是WM_KEYDOWN,字元訊息是WM_CHAR,等等。在程式中我們通常都是以WM_XXX宏的形式來使用訊息的。 提示:如果想知道WM_XXX訊息對應的具體數值,可以在Visual C++開發環境中選中WM_XXX,然後單擊滑鼠右鍵,在彈出選單中選擇goto definition,即可看到該宏的具體定義。跟蹤或檢視某個變數的定義,都可以使用這個方法。 第三、第四個成員變數wParam和lParam,用於指定訊息的附加資訊。例如,當我們收到一個字元訊息的時候,message成員變數的值就是WM_CHAR,但使用者到底輸入的是什麼字元,那麼就由wParam和lParam來說明。wParam、lParam表示的資訊隨訊息的不同而不同。如果想知道這兩個成員變數具體表示的資訊,可以在MSDN中關於某個具體訊息的說明文件檢視到。讀者可以在VC++的開發環境中透過goto definition檢視一下WPARAM和LPARAM這兩種型別的定義,可以發現這兩種型別實際上就是unsigned int和long。 最後兩個變數分別表示訊息投遞到訊息佇列中的時間和滑鼠的當前位置。 hwnd Identifies the window whose window procedure receives the message. message Specifies the message number. wParam Specifies additional information about the message. The exact meaning depends on the value of the message member. lParam Specifies additional information about the message. The exact meaning depends on the value of the message member. time Specifies the time at which the message was posted. pt Specifies the cursor position, in screen coordinates, when the message was posted. minigui中的MSG的定義: 在 MiniGUI 中,訊息被如下定義(include/window.h): 352 typedef struct _MSG 353 { 354 HWND hwnd; 355 int message; 356 WPARAM wParam; 357 LPARAM lParam; 358 #ifdef _LITE_VERSION 359 unsigned int time; 360 #else 361 struct timeval time; 362 #endif 363 POINT pt; 364 #ifndef _LITE_VERSION 365 void* pAdd; 366 #endif 367 }MSG; 368 typedef MSG* PMSG; 一個訊息由該訊息所屬的視窗(hwnd)、訊息編號(message)、訊息的 WPARAM 型引數(wParam)連同訊息的 LPARAM 型引數(lParam)組成。訊息的兩個引數中包含了重要的內容。比如,對滑鼠訊息而言,lParam 中一般包含滑鼠的位置資訊,而 wParam 引數中則包含發生該訊息時,對應的 SHIFT 鍵的狀態資訊等。對其他不同的訊息型別來講,wParam 和 lParam 也具備明確的定義。當然,使用者也能夠自定義訊息,並定義訊息的 wParam 和 lParam 意義。為了使用者能夠自定義訊息,MiniGUI 定義了 MSG_USER 宏,可如下定義自己的訊息: #define MSG_MYMESSAGE1 (MSG_USER + 1) #define MSG_MYMESSAGE2 (MSG_USER + 2)
MSG 商品名稱:味精,味素。因味精起源於小麥,俗稱麩酸鈉、穀氨酸鈉。 英文名稱:Monosodium L-glutamate。簡寫:MSG 性狀:味精是無色至白色的柱狀結晶或白色的結晶性粉末。 在Windows程式中,訊息是由MSG結構體來表示的。MSG結構體的定義如下(參見MSDN): typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; 該結構體中各成員變數的含義如下: 第一個成員變數hwnd表示訊息所屬的視窗。我們通常開發的程式都是視窗應用程式,一個訊息一般都是與某個視窗相關聯的。例如,在某個活動視窗中按下滑鼠左鍵,產生的按鍵訊息就是發給該視窗的。在Windows程式中,用HWND型別的變數來標識視窗。 第二個成員變數message指定了訊息的識別符號。在Windows中,訊息是由一個數值來表示的,不同的訊息對應不同的數值。但是由於數值不便於記憶,所以Windows將訊息對應的數值定義為WM_XXX宏(WM是Window Message的縮寫)的形式,XXX對應某種訊息的英文拼寫的大寫形式。例如,滑鼠左鍵按下訊息是WM_LBUTTONDOWN,鍵盤按下訊息是WM_KEYDOWN,字元訊息是WM_CHAR,等等。在程式中我們通常都是以WM_XXX宏的形式來使用訊息的。 提示:如果想知道WM_XXX訊息對應的具體數值,可以在Visual C++開發環境中選中WM_XXX,然後單擊滑鼠右鍵,在彈出選單中選擇goto definition,即可看到該宏的具體定義。跟蹤或檢視某個變數的定義,都可以使用這個方法。 第三、第四個成員變數wParam和lParam,用於指定訊息的附加資訊。例如,當我們收到一個字元訊息的時候,message成員變數的值就是WM_CHAR,但使用者到底輸入的是什麼字元,那麼就由wParam和lParam來說明。wParam、lParam表示的資訊隨訊息的不同而不同。如果想知道這兩個成員變數具體表示的資訊,可以在MSDN中關於某個具體訊息的說明文件檢視到。讀者可以在VC++的開發環境中透過goto definition檢視一下WPARAM和LPARAM這兩種型別的定義,可以發現這兩種型別實際上就是unsigned int和long。 最後兩個變數分別表示訊息投遞到訊息佇列中的時間和滑鼠的當前位置。 hwnd Identifies the window whose window procedure receives the message. message Specifies the message number. wParam Specifies additional information about the message. The exact meaning depends on the value of the message member. lParam Specifies additional information about the message. The exact meaning depends on the value of the message member. time Specifies the time at which the message was posted. pt Specifies the cursor position, in screen coordinates, when the message was posted. minigui中的MSG的定義: 在 MiniGUI 中,訊息被如下定義(include/window.h): 352 typedef struct _MSG 353 { 354 HWND hwnd; 355 int message; 356 WPARAM wParam; 357 LPARAM lParam; 358 #ifdef _LITE_VERSION 359 unsigned int time; 360 #else 361 struct timeval time; 362 #endif 363 POINT pt; 364 #ifndef _LITE_VERSION 365 void* pAdd; 366 #endif 367 }MSG; 368 typedef MSG* PMSG; 一個訊息由該訊息所屬的視窗(hwnd)、訊息編號(message)、訊息的 WPARAM 型引數(wParam)連同訊息的 LPARAM 型引數(lParam)組成。訊息的兩個引數中包含了重要的內容。比如,對滑鼠訊息而言,lParam 中一般包含滑鼠的位置資訊,而 wParam 引數中則包含發生該訊息時,對應的 SHIFT 鍵的狀態資訊等。對其他不同的訊息型別來講,wParam 和 lParam 也具備明確的定義。當然,使用者也能夠自定義訊息,並定義訊息的 wParam 和 lParam 意義。為了使用者能夠自定義訊息,MiniGUI 定義了 MSG_USER 宏,可如下定義自己的訊息: #define MSG_MYMESSAGE1 (MSG_USER + 1) #define MSG_MYMESSAGE2 (MSG_USER + 2)