在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

區(qū)分與理解消息反射機制

區(qū)分與理解消息反射機制

更新時間:2022-05-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

鄭力群

前言:

  我曾寫過一篇文章對通知消息WM_NOTIFY進行分析,消息反射是MFC中對通知消息的處理方式,兩者之間關(guān)系十分緊密,因此,我寫了這篇文章,希望能夠描繪出通知消息的完整印象。

消息反射的基礎(chǔ)知識

1、消息反射解釋:
  父窗口將控制子窗口發(fā)給它的通知消息,首先反射回子窗口進行處理(即給控制子窗口一個機會,讓控制子窗口處理此消息),這樣通知消息就有機會能被子窗口自身進行處理。

2、MFC中引入消息反射的原因:
  在Windows的消息處理中,控制子窗口的發(fā)給其父窗口的通知消息只能由其父窗口進行處理,這使得控制子窗口的自身能動性大大降低(你想,它連改變自己的背景色,處理一個自身滾動問題都要其父窗口來完成),為了解決這個問題,在MFC中引入了反射消息“Reflect Message”的概念,進行消息反射,可以使得控制子窗口能夠自行處理與自身相關(guān)的一些消息,增強了封裝性,從而提高了控制子窗口的可重用性。

消息反射的處理流程(不考慮OLE控制)

一、消息反射處理流程圖:
  1、父窗口收到控制子窗口發(fā)來的通知消息后,調(diào)用它的虛函數(shù)CWnd::OnNotify.
CWnd::OnNotify()主體部分:
{
if (ReflectLastMsg(hWndCtrl, pResult)) //此時,hWndCtrl,為發(fā)送窗口,即子窗口的窗口句柄
return TRUE; // 子窗口已處理了此消息
AFX_NOTIFY notify;
notify.pResult = pResult;
notify.pNMHDR = pNMHDR;
return OnCmdMsg(nID, MAKELONG(nCode, WM_NOTIFY), ¬ify, NULL);
}

  分析:首先,調(diào)用ReflectLastMsg(hCtrlChildWnd,...)給子窗口一個自身處理的機會,將消息反射給子窗口處理,函數(shù)返回TRUE,表明子窗口處理了此消息。反之,表示子窗口未處理此消息,此時,調(diào)用OnCmdMsg(...)由父窗口進行通常的處理。

  2、ReflectLastMsg中:
  主要是調(diào)用發(fā)送窗口的SendChildNotifyLastMsg(...)。

  3、SendChildNotifyLastMsg 中:
  調(diào)用發(fā)送窗口的虛函數(shù)OnChildNotify函數(shù),進行處理。 如果沒有處理,則調(diào)用ReflectChildNotify(...)函數(shù)進行標(biāo)準(zhǔn)的反射消息的消息映射處理。


二、消息處理

方式1:
  由上述處理流程可以看出來,子窗口要想自身處理此消息,重載子控件窗口的OnChildNotify虛擬函數(shù)應(yīng)該是很容易想到的方式。

  注意:MFC中對各個子控件窗口一般都已經(jīng)重載了OnChildNotify函數(shù),它對應(yīng)調(diào)用類的虛函數(shù)進行處理,所以,你重載對應(yīng)的虛函數(shù)即可,如下例:
BOOL CStatusBarCtrl::OnChildNotify(UINT message, WPARAM wParam, LPARAM lParam,LRESULT* pResult)
{
if (message != WM_DRAWITEM) //對應(yīng)不同的控制,會有不同的有特殊處理要求的消息。
return CWnd::OnChildNotify(message, wParam, lParam, pResult);
...
...
DrawItem((LPDRAWITEMSTRUCT)lParam);
return TRUE;
}
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
void CStatusBarCtrl::DrawItem(LPDRAWITEMSTRUCT)
{
ASSERT(FALSE); // must override for self draw status bars
}

  你重載CSTatusBarCtrl類的DrawItem虛擬函數(shù),即可實現(xiàn)對反射消息WM_DRAWITEM的處理。

方式2:
  從方式1可以看出,如果你不在被重載的OnChildNotify中對消息進行處理,函數(shù)會調(diào)用CWnd::OnChildNotify,它調(diào)用ReflectChildNotify函數(shù)進行標(biāo)準(zhǔn)的處理。
1、增加反射消息的映射入口。
2、增加對應(yīng)的消息處理函數(shù)。
注意:可以使用MFC的ClassWizard作上述動作,在ClassWizard中,可處理的反射消息以一個"="號以示區(qū)別。返回值為TRUE,表示控件窗口已處理此反射消息,為FALSE,表示控件子窗口未處理此反射消息。

結(jié)語:

  消息反射不是很難的概念。它僅出現(xiàn)在MFC中;它的用意是方便控制子窗口的重用;對某些通知消息你可以重載對應(yīng)的虛函數(shù)(WM_DRAWITEM...)進行處理;對其它你可以使用標(biāo)準(zhǔn)的消息反射映射進行處理。限于篇幅,一些細(xì)節(jié)問題,請閱讀MFC中對應(yīng)的源代碼。  

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 强开小嫩苞一区二区三区网站 | 亚洲一级免费观看| 高清欧美精品xxxxx| 欧美午夜精品理论片| 一本久道中文无码字幕av| 秋霞无码一区二区| 久久久久久久久久网| 97干在线视频| 欧美精品一区二区三区三州| 999久久欧美人妻一区二区| 国产精品夜夜夜爽张柏芝| 午夜免费福利网站| 欧美aaa在线观看| mm131午夜| 欧美国产视频一区| 久久久久免费看黄a片app| 国产精品69久久久| 国产91在线免费| 国产成人亚洲精品无码h在线| 成人免费毛片网| 丁香婷婷激情网| 欧美成人手机在线视频| 亚洲欧美一二三| av免费观看国产| 日本美女高潮视频| 天天综合中文字幕| 欧美激情 国产精品| 国产日韩成人内射视频| 亚洲色图偷拍视频| 人人妻人人澡人人爽欧美一区双| 欧美啪啪免费视频| 色婷婷一区二区三区av免费看| 中文字幕精品一区二区三区在线| 天堂av手机在线| 免费人成自慰网站| 视频二区在线播放| 国产资源在线免费观看| 91精品无人成人www| 国产黄色激情视频| 一本色道无码道dvd在线观看| 狠狠躁狠狠躁视频专区| 男人日女人的bb| 亚洲精品高清无码视频| 性做爰过程免费播放| 激情五月亚洲色图| 日韩人妻无码精品久久久不卡| 啊啊啊国产视频| 国产精品日韩三级| jizz大全欧美jizzcom| 99国产精品白浆在线观看免费| 一区二区xxx| av免费观看大全| 午夜在线视频免费观看| 污污视频网站免费观看| 免费不卡av在线| 二级片在线观看| 亚洲一级免费在线观看| 黑人糟蹋人妻hd中文字幕| 国产freexxxx性播放麻豆| 三级黄色片免费观看| 无码人妻精品一区二区三区66| 精品国产一区二区三区无码| 日本xxx免费| 亚洲欧美一区二区三区不卡| 国产九九热视频| 孩娇小videos精品| 日本人视频jizz页码69| 国产精品天天av精麻传媒| 男人日女人bb视频| 成人免费在线小视频| 日本精品免费在线观看| 青青草视频在线免费播放| 蜜臀av无码一区二区三区| 精品人妻人人做人人爽| 免费看欧美一级片| 给我免费播放片在线观看| 国产精品无码人妻一区二区在线| 国产成人一二三区| 欧美图片激情小说| 777av视频| 久久久久久久久久久免费视频| 青青草原成人网| 日韩中文字幕组| 日韩爱爱小视频| 久久精品一卡二卡| 日本福利视频一区| 免费观看成人网| 亚洲va综合va国产va中文| 亚洲欧美日韩网站| 国产美女在线一区| 久久婷婷国产91天堂综合精品| 中文字幕国产免费| 久久久久亚洲av无码专区喷水| 国产91在线亚洲| 亚洲熟妇av一区二区三区| 99re精彩视频| 91精品国产毛片武则天| 日本精品一区二区三区四区| www.com黄色片| 久久久久久久久久久久久国产| 精品国产av无码一区二区三区| 欧美激情国产精品日韩| 欧美激情第四页| 成人在线免费在线观看| 搡的我好爽在线观看免费视频| 国产精品专区在线| 日韩欧美亚洲另类| 内射国产内射夫妻免费频道| 57pao国产成永久免费视频| 黄色a级三级三级三级| 九九九九九九九九| 国产手机视频在线观看| 一区二区三区免费播放| 中文字幕精品在线播放| 国产又大又黄又粗的视频| 蜜桃视频成人在线观看| 国产视频手机在线播放| 少妇高潮毛片色欲ava片| 欧美日韩久久婷婷| 国产精品久久久毛片| 欧美日韩性生活片| av动漫在线播放| 免费精品99久久国产综合精品应用| 久久av综合网| 成人毛片100部免费看| 黄色小视频免费网站| 日本人视频jizz页码69| caoporn超碰97| 国产肥臀一区二区福利视频| 国产美女永久无遮挡| 特级黄色录像片| 亚洲理论中文字幕| 男人女人黄一级| 日本三级免费观看| 欧美成人xxxxx| 黄色片久久久久| 免费日韩中文字幕| 亚洲一二三区av| 久久久久国产一区| 国产小视频精品| 看看黄色一级片| 亚洲一二区在线观看| 91在线第一页| 男女激烈动态图| 日本一本中文字幕| 青青草精品视频在线| www.浪潮av.com| 十八禁视频网站在线观看| 一区二区三区免费播放| gai在线观看免费高清| 污污的视频免费| 影音先锋成人资源网站| 日本wwwcom| av免费中文字幕| 日本黄色福利视频| 日韩视频一二三| aa视频在线播放| 91极品视频在线观看| 最新黄色av网站| 黄页网站大全在线观看| 天天操天天爱天天爽| 五月天av影院| www.com毛片| 九九九久久久久久久| 国产av熟女一区二区三区| 九九九九免费视频| 91看片破解版| 免费在线观看亚洲视频| 日韩av.com| 黄色一级在线视频| 日韩欧美中文在线视频| 国产精品自拍片| 在线观看岛国av| 欧美精品一区免费| 在线观看成人免费| 一级黄色香蕉视频| 免费在线看黄色片| 色呦色呦色精品| 97xxxxx| 日韩精品手机在线观看| 爱情岛论坛亚洲首页入口章节| 欧美日韩dvd| 中文字幕丰满乱码| av动漫免费看| 日韩欧美精品免费| 亚洲自拍第三页| 精品亚洲一区二区三区四区| 日本精品久久久久久久久久| 五月激情五月婷婷| 日韩免费高清在线| 精品久久一二三| 国产免费内射又粗又爽密桃视频| 日本中文字幕精品—区二区| 国产三区在线视频| 欧美aⅴ在线观看| 精品一区二区三区无码视频| 久久精品一卡二卡| 欧美视频国产视频| 女同激情久久av久久| 一区二区免费av|