最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入VC回調函數(shù)的使用詳解

 更新時間:2013年05月17日 15:05:03   作者:  
本篇文章是對VC回調函數(shù)的使用進行了詳細的分析介紹,需要的朋友參考下
回調函數(shù)說白了就是事件響應程序,Windows的每個消息可以理解為一個事件,事件的響應代碼要由用戶自己來定義。用戶定義了事件響應的代碼,但還要Windows知道這段代碼的位置(要不然Windows就不知道如何去調用,這也沒有用),于是用戶需要將回調函數(shù)的指針告訴Windows,最典型的例子是在窗口類的結構(WNDCLASS)中給lpfnWndProc分量賦回調函數(shù)指針值。

回調函數(shù)的參數(shù)格式是由回調函數(shù)的調用者(一般是Windows)來定義的,而回調函數(shù)的實現(xiàn)者必須遵循這種格式。Windows程序是以事件驅動模型為基礎的,這就必然要用到回調函數(shù)這種機制。

要透徹了解回調函數(shù),多看看SDK Samples。而MFC中的消息映射機制已經將窗口消息響應的回調函數(shù)隱藏起來了,這也符合C++的編程思想,回調函數(shù)終究是一種全局函數(shù),它不能在類中實現(xiàn),而消息映射機制的目的是使消息響應的代碼最終封裝在窗口類(CWnd類的子類)中。

如果有時間,不妨看看MESSAGE_MAP宏,消息映射是回調函數(shù),只是這種回調函數(shù)的用法不同而已。普通的回調函數(shù)是要你提供地址,傳進某個函數(shù),由它去調用;而消息映射函數(shù),卻是由你定義函數(shù),由MESSAGE_MAP宏去取得地址,并實現(xiàn)它的調用。

回調函數(shù)是一個程序員不能顯式調用的函數(shù);通過將回調函數(shù)的地址傳給調用者從而實現(xiàn)調用。要實現(xiàn)回調,必須首先定義函數(shù)指針。盡管定義的語法有點不可思議,但如果你熟悉函數(shù)聲明的一般方法,便會發(fā)現(xiàn)函數(shù)指針的聲明與函數(shù)聲明非常類似。
CODE:
復制代碼 代碼如下:

#include "stdafx.h"
#include "stdio.h"
void (*fun1)();
void A()
{
 printf("fun1/n");
}
void caller(void(*fun1)())
{
 printf("fun1 start/n");
 fun1();
 printf("fun1 end/n");
}
bool func2(int * i)
{
 printf("From func2() = %d, Hello World!/n", (*i)++);
 return true;
}
void caller2(bool func2(int *),int *j)
{
 func2(j);
}
int main(int argc, char* argv[])
{
 printf("From main(), Hello World!/n");
 printf("/n");

 caller(A);
 int i = 0;
 for (int j = 0; j < 10; j++)
 {
  caller2(func2, &i); //* 傳遞函數(shù)地址到調用者 */
 }

 getchar();

 return 0;
}

相關文章

  • 淺談c++ vector和map的遍歷和刪除對象

    淺談c++ vector和map的遍歷和刪除對象

    下面小編就為大家?guī)硪黄獪\談c++ vector和map的遍歷和刪除對象。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Qt4和Qt5的信號和槽的使用區(qū)別

    Qt4和Qt5的信號和槽的使用區(qū)別

    本文主要介紹了Qt4 和 Qt5 的信號和槽的連接 connect 與斷開 disconnect 區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++實現(xiàn)LeetCode(312.打氣球游戲)

    C++實現(xiàn)LeetCode(312.打氣球游戲)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(312.打氣球游戲),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • c++?error:crosses?initialization?of問題解決分析

    c++?error:crosses?initialization?of問題解決分析

    這篇文章主要介紹了c++?error:crosses?initialization?ofde?問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 基于list循環(huán)刪除元素,迭代器失效的問題詳解

    基于list循環(huán)刪除元素,迭代器失效的問題詳解

    下面小編就為大家?guī)硪黄趌ist循環(huán)刪除元素,迭代器失效的問題詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C語言代碼實現(xiàn)簡易掃雷

    C語言代碼實現(xiàn)簡易掃雷

    這篇文章主要為大家詳細介紹了C語言代碼實現(xiàn)簡易掃雷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • C++異常處理方式實例詳解(超級詳細!)

    C++異常處理方式實例詳解(超級詳細!)

    程序有時會遇到運行階段錯誤,導致程序無法正常執(zhí)行下去,c++異常為處理這種情況提供了一種功能強大的而靈活的工具,下面這篇文章主要給大家介紹了關于C++異常處理方式的相關資料,需要的朋友可以參考下
    2023-04-04
  • Pipes實現(xiàn)LeetCode(194.轉置文件)

    Pipes實現(xiàn)LeetCode(194.轉置文件)

    這篇文章主要介紹了Pipes實現(xiàn)LeetCode(194.轉置文件),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C++編程語言中賦值運算符重載函數(shù)(operator=)的使用

    C++編程語言中賦值運算符重載函數(shù)(operator=)的使用

    本文主要介紹了C++編程語言中賦值運算符重載函數(shù)(operator=)介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • QML與C++幾種交互方式

    QML與C++幾種交互方式

    QML作為構建界面的語言是非常簡潔的,但是界面的后臺有些時候是經常要與C++交互的,本文主要介紹了QML與C++幾種交互方式,感興趣的可以了解一下
    2024-04-04

最新評論

桦南县| 蓬溪县| 竹山县| 淄博市| 新余市| 阿图什市| 临夏市| 大同市| 玉龙| 罗定市| 岳阳市| 南皮县| 崇义县| 简阳市| 葵青区| 锡林郭勒盟| 定远县| 永安市| 巴塘县| 江孜县| 翁牛特旗| 邹城市| 改则县| 佛坪县| 板桥市| 上饶县| 芜湖县| 永康市| 宣化县| 定结县| 东乡县| 大连市| 永德县| 绍兴市| 玛曲县| 酒泉市| 宜川县| 连城县| 沾益县| 柘荣县| 遂宁市|