一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - vc中SendMessage自定義消息函數用法實例

vc中SendMessage自定義消息函數用法實例

2021-02-18 14:39C語言教程網 C/C++

這篇文章主要介紹了vc中SendMessage自定義消息函數用法,以實例實行詳細講述了SendMessage的定義、原理與用法,具有一定的實用價值,需要的朋友可以參考下

本文實例講述了vc中SendMessage自定義消息函數用法,分享給大家供大家參考。具體如下:

SendMessage的基本結構如下:

復制代碼 代碼如下:
SendMessage(
    HWND hWnd,  //消息傳遞的目標窗口或線程的句柄。
    UINT Msg, //消息類別(這里可以是一些系統消息,也可以是自己定義,下文具體介紹,)
    WPARAM wParam, //參數1 (WPARAM 其實是與UINT是同種類型的,
  //在vc編譯器中右鍵有個“轉到WPARAM的定義”的選項可以查看。
    LPARAM lParam); //參數2

 

其中一些參數的由來如下:

//typedef unsigned int UINT;
//typedef UINT WPARAM;
//typedef LONG LPARAM;
//typedef LONG LRESULT;

例如可以用以下語句:

復制代碼 代碼如下:
::SendMessage(this->m_hWnd, WM_MY_DOSOME, (WPARAM) 0, (LPARAM) 0);

 

這里我發送的消息是本窗體接收的,所以句柄用:this->m_hWnd
這里的消息類別WM_MY_DOSOME就是我自定義的,
在接收消息的窗體或線程所在的頭文件里:

復制代碼 代碼如下:
#define WM_MY_DOSOME WM_USER+1 // do something


當然你還可以定義更多如:

復制代碼 代碼如下:
#define WM_DOOTHER WM_USER+2 // do other


表示要做一些事情。

 

到這里,可能大家還是對消息類別有點模糊,不要擔心,下面很快就講到。
我們發了一個消息出去,那么接收方要能識別這個消息是干什么,就是通過消息類別來區分,并且開始去做這個消息對應要處理的事情。如下:

一、編寫一個事情:
我們在接收窗體里定義一個這樣的事情(過程),

復制代碼 代碼如下:
afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
{
 MessageBox("收到消息了,我要開始做一些事情了。","收到",MB_OK);
 //可以運用iParam1,iParam2 來做一些事情。
 return 0;
}


這個事情有3點大家要注意,非常重要:

 

1. 使用了afx_msg,并且要將afx_msg LRESULT DoSomeThing(WPARAM iParam1,LPARAM iParam2)
改寫到頭文件的
//{{AFX_MSG
//。。。改寫到這里,顏色會變成灰的。這一點非常重要。
//}}AFX_MSG
2. 參數有2個,WPARAM iParam1,LPARAM iParam2,哪怕沒有東西傳進來也要寫,不然會吃苦頭的,vc里不會提醒你少寫了一個,
但一些莫名奇妙的事情會發生。
3. 類型用 LRESULT,完了要return 0;

二、讓接收方知道什么時候做這個事情:
我們在

復制代碼 代碼如下:
//{{AFX_MSG_MAP
//。。。這里寫上
ON_MESSAGE(WM_MY_DOSOME,DoSomeThing)
//如果還有其他消息就再寫一個
ON_MESSAGE(WM_DOOTHER,DoOther)
//}}AFX_MSG_MAP


到這里,當你用SendMessage,發了一個WM_MY_DOSOME類型的消息過來的時候,接收方就會去做DoSomeThing(WPARAM iParam1,LPARAM iParam2)
發了一個WM_DOOTHER類型的消息過來的時候,接收方就會去做DoOther(WPARAM iParam1,LPARAM iParam2)當然,這里DoOther我還沒有定義。

 

這樣就是一個完整的消息發送與接受過程,這里沒有詳細講參數,iParam1,因為還沒有用到很復雜的情況,

在頭文件里:

復制代碼 代碼如下:

#define WM_MYMSG  WM_USER+5 //自定義一個消息

 

afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); //自定義消息的處理函數聲明

 

在.cpp文件里:

復制代碼 代碼如下:

ON_MESSAGE(WM_MYMSG, OnMyMessage)
//利用ON_MESSAGE()宏在自定義消息與其處理函數間建立映射關系

 

void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
//從lParam中取出CString對象的指針,并將字符串內容在IDC_MSGEDIT中顯示出來
{

    CString *str;
    str=(CString *)lParam;

    SetDlgItemText(IDC_EDIT,*str);
}

 

按下按鈕發送消息

復制代碼 代碼如下:
void CModelessDlg::OnMsgBTN()
{
 CString str= "自定義消息被觸發了!";
 SendMessage(WM_MYMSG, 0, (LPARAM) &str);
 //給ModelessDlg自己發一個自定義的消息
}

 

希望本文所述對大家的VC程序設計有所幫助。

延伸 · 閱讀

精彩推薦
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
主站蜘蛛池模板: 91小视频在线观看免费版高清 | 91精品免费国产高清在线 | 欧美日韩中文国产一区二区三区 | 国产一区二区三区免费在线视频 | 久久亚洲电影www电影网 | 动漫在线观看h | 国产成人精品免费 | 国产拍拍拍 | 午夜福利08550 | 国产成人一区二区三区影院免费 | 免费国产在线观看 | 亚洲欧美日韩中文字幕久久 | 精品视频手机在线观看免费 | 边吃奶边扎下面 | 高h全肉动漫在线观看免费 高h辣h双处全是肉军婚 | 午夜精品久久久久久久99蜜桃 | 日韩亚洲欧美理论片 | 欧美综合色网 | 日韩亚洲人成在线 | 日韩精品 欧美 | 91天堂在线视频 | 99热这里只有精品国产在热久久 | 小寡妇好紧进去了好大看视频 | 国产欧美日韩亚洲精品区2345 | 国产播放器一区 | 猛吸奶水的老汉 | 半挠脚心半黄的网站 | 思敏1一5集国语版免费观看 | 日韩成本大片35分钟免费播放 | 亚洲天堂男人网 | 校花被老头夺去第一次动图 | 欧美一区二区三区不卡视频 | 国产123区在线视频观看 | 99热久久这里只精品国产www | 天天干女人 | 为什么丈夫插我我却喜欢被打着插 | 亚洲成a人不卡在线观看 | 999精品视频在线观看 | 国产午夜大片 | 三上悠亚精品专区久久 | 免费yjsp妖精com |