a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

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

2020-01-26 16:12:01
字體:
供稿:網(wǎng)友
回調(diào)函數(shù)說白了就是事件響應(yīng)程序,Windows的每個消息可以理解為一個事件,事件的響應(yīng)代碼要由用戶自己來定義。用戶定義了事件響應(yīng)的代碼,但還要Windows知道這段代碼的位置(要不然Windows就不知道如何去調(diào)用,這也沒有用),于是用戶需要將回調(diào)函數(shù)的指針告訴Windows,最典型的例子是在窗口類的結(jié)構(gòu)(WNDCLASS)中給lpfnWndProc分量賦回調(diào)函數(shù)指針值。

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

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

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

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

#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ù)地址到調(diào)用者 */
 }

 getchar();

 return 0;
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 日本美女黄网站 | 91精品国产综合久久久蜜臀粉嫩 | 亚洲一级免费观看 | 一级免费片 | 国产美女精品视频 | 日韩午夜在线 | 欧美一区二区三区在线看 | 亚洲欧美综合一区 | 国产日韩欧美精品一区 | 女人口述交换啪啪高潮过程 | 日韩美女中文字幕 | 免费成人在线网站 | www.日本三级 | 精品一区二区久久久久久久网站 | 欧美日韩大片在线观看 | 91久久国产综合久久 | 天堂一区二区三区 | a级片网站 | 91在线视频免费观看 | 久久亚洲天堂 | 久久精品福利 | 国产一区二区三区色淫影院 | 国产1区2区3区 | 日韩欧美综合 | 久久成人一区 | 99精品亚洲国产精品久久不卡 | 狠狠撸在线视频 | theporn国产在线精品 | 国产一区二区影院 | 国产高清精品一区 | 国产三级在线免费观看 | 亚洲精品亚洲人成人网 | 99热国产在线观看 | 国产精品久久久久久久久久东京 | 欧美精品一区二区三区在线四季 | 久热在线视频 | 男女做网站 | www国产亚洲精品久久网站 | 亚洲麻豆精品 | 精品国产一区二区三区av片 | 欧美盗摄|