青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

旅途

如果想飛得高,就該把地平線忘掉

子類化窗口如何才能接收到WM_CREATE、WM_NCCREATE等消息

主  題:
子類化窗口如何才能接收到WM_CREATE、WM_NCCREATE等消息
作  者:
mopyman (only you c plus plus)
等  級:
信 譽 值:
98
所屬論壇:
VC/MFC 基礎(chǔ)類
問題點數(shù):
100
回復(fù)次數(shù):
18
發(fā)表時間:
2007-3-12 20:57:07








一般子類化窗口的時候是無法接收到WM_CREATE,WM_NCCREATE消息的,因為子類化的時候,已經(jīng)錯過了處理這些消息的時機,有什么方法可以接收到這些消息呢?


回復(fù)人:chehw(chehw) ( 兩星(中級)) 信譽:110 2007-3-12 21:03:06 得分:0


?

可以使用超類化(supper class)方法。
注冊一個新窗口類,新窗口的回調(diào)函數(shù)默認返回原始窗口的處理過程。

Top


回復(fù)人:mopyman(only you c plus plus) ( 三級(初級)) 信譽:98 2007-3-12 21:17:28 得分:0


?

不想超類化也不想全局子類化,有其他方法嗎?
Top


回復(fù)人:bucherren() ( 一級(初級)) 信譽:99 2007-3-12 21:20:39 得分:0


?

關(guān)注,只知道超類化方法
Top


回復(fù)人:chehw(chehw) ( 兩星(中級)) 信譽:110 2007-3-12 21:38:20 得分:0


?

在PreTranslateMessage或GetMessage消息循環(huán)中可以截獲,但這是以犧牲性能為代價的。
超類化是最簡單易行的方法。
Top


回復(fù)人:mopyman(only you c plus plus) ( 三級(初級)) 信譽:98 2007-3-13 8:37:02 得分:0


?

超類化有個缺點,必須要先建立一個窗口才可以超類化,
也就是對應(yīng)每個窗口類要維護一個額外的窗口,其余的窗口才能從超類化中受益
Top


回復(fù)人:chehw(chehw) ( 兩星(中級)) 信譽:110 2007-3-13 9:47:57 得分:0


?


如果直接用API, 只要得到窗口回調(diào)函數(shù)地址的函數(shù)指針就可以了,沒有必要新建一個窗口。
如果是自定義的窗口類, 那么你已知這個函數(shù)的地址, 在超類的回調(diào)函數(shù)中返回就可以了.
如果是系統(tǒng)內(nèi)置的窗口控件, 可通過GetClassInfoEx獲取函數(shù)的地址。

MFC下的方法類似,
Top


回復(fù)人:mopyman(only you c plus plus) ( 三級(初級)) 信譽:98 2007-3-13 10:03:29 得分:0


?

記錯了,全局子類化需要一個窗口句柄,超類化不需要
Top


回復(fù)人:mopyman(only you c plus plus) ( 三級(初級)) 信譽:98 2007-3-13 10:18:52 得分:0


?

超類化也有一個問題,當使用對話框的時候,dialog里的子窗口控制如何超類化掉?
就算在dialog創(chuàng)建之前,把所有用到的子窗口類型都超類化掉,dialog也不會給我們傳遞
每個子窗口控制的相關(guān)信息,也就無法對每個子窗口進行特化。
而如果由我們自己創(chuàng)建子窗口的話,可以在createwindowex中的lparam里傳遞一些子窗口
控制相關(guān)的數(shù)據(jù),比如一個窗口對象this指針。
Top


回復(fù)人:chehw(chehw) ( 兩星(中級)) 信譽:110 2007-3-13 10:29:33 得分:0


?

對于在資源文件中加入的控件, 只能在對話框的WM_INITDIALOG中通過
hChildWnd=GetDlgItem(hDlg, ID_xxx);
SetWindowLong(hChildWnd, GWL_USERDATA, (LONG)pData);
加入額外的數(shù)據(jù)。

如果是自己手工創(chuàng)建的控件,創(chuàng)建時就可傳入必要的數(shù)據(jù),通過超類化在WM_CREATE中將數(shù)據(jù)保存。

Top


回復(fù)人:gofqjyie(誓將天下了然于胸) ( 四級(中級)) 信譽:100 2007-3-13 10:32:53 得分:0


?

虛擬繼承它,可以嗎?
Top


回復(fù)人:tszzp(神奇) ( 三級(初級)) 信譽:98 2007-3-13 10:34:06 得分:0


?

你可以使用WH_CBT鉤子,這樣的話,你就可以收到那些消息了。
Top


回復(fù)人:mopyman(only you c plus plus) ( 三級(初級)) 信譽:98 2007-3-13 10:39:36 得分:0


?

WH_CBT鉤子有一個問題,我一直不明白,就是當有窗口創(chuàng)建的時候,
你怎么知道就是你想要的窗口呢,也就是如果對應(yīng)windows窗口句柄和c++窗口對象,
好像所有的窗口創(chuàng)建的時候都會被WH_CBT截獲
Top


回復(fù)人:mopyman(only you c plus plus) ( 三級(初級)) 信譽:98 2007-3-13 10:45:36 得分:0


?

對于在資源文件中加入的控件, 只能在對話框的WM_INITDIALOG中通過
hChildWnd=GetDlgItem(hDlg, ID_xxx);
SetWindowLong(hChildWnd, GWL_USERDATA, (LONG)pData);
加入額外的數(shù)據(jù)。

如果是自己手工創(chuàng)建的控件,創(chuàng)建時就可傳入必要的數(shù)據(jù),通過超類化在WM_CREATE中將數(shù)據(jù)保存。
=====================================
這樣一來,對話框里的子窗口控制將仍然無法獲得WM_CREATE消息,
因為我想要的超類的窗口過程是個通用的,通過額外的參數(shù)來辨識是哪個窗口對象,
從而把消息先交該窗口對象處理,再調(diào)用原系統(tǒng)窗口過程,這樣就更
hChildWnd=GetDlgItem(hDlg, ID_xxx);
SetWindowLong(hChildWnd, GWL_USERDATA, (LONG)pData);的時候已經(jīng)錯過了WM_CREATE消息
Top


回復(fù)人:chehw(chehw) ( 兩星(中級)) 信譽:110 2007-3-13 10:51:11 得分:0


?

你需要知道父窗口的句柄和子窗口的id
LRESULT CALLBACK CBTProc( int nCode, WPARAM wParam, LPARAM lParam );
{
CBT_CREATEWND *pcc=(CBT_CREATEWND *)lParam;
if(pcc->lpcs->hwndParent==hParent && pcc->lpcs->hMenu==(HMENU)id)
{
...
}
return 0L;
}
Top


回復(fù)人:chehw(chehw) ( 兩星(中級)) 信譽:110 2007-3-13 11:08:09 得分:0


?

有一個方法,但必額外創(chuàng)建一個窗口。如:
HWND hEdit=CreateWindowEx(0, TEXT("EDIT"), ...);
//強行將以后創(chuàng)建的所有edit處理過程均改為超類的窗口過程。
SetClassLong(hEdit, GCL_WNDPROC, (LONG)CMyEdit::MyEditProc);
DestroyWindow(hEdit);


Top


回復(fù)人:mopyman(only you c plus plus) ( 三級(初級)) 信譽:98 2007-3-13 12:22:21 得分:0


?

你說的這個就是全局子類化
Top


回復(fù)人:Kerrie() ( 五級(中級)) 信譽:100 2007-3-13 12:45:09 得分:0


?

這個問題是有點疙疙瘩瘩的,看你的用途了,如果僅僅是做一些初始化的處理(繪制處理如皮膚等除外),以對話框為例,可以用一些變通的方法:
1。子窗口初始化無法create消息,不過可以觸發(fā)PreSubClassWnd虛函數(shù)。
2。自己創(chuàng)建需要截獲消息的子窗口。終究不是所有的子窗口你都需要create消息的:)
3。如樓上各位所說的超類或者鉤子處理了,不過個人建議如果不是皮膚等工作,還是避免處理大范圍的消息為好

Top


回復(fù)人:mynamelj(風(fēng)動,帆動,仁者心動) ( 兩星(中級)) 信譽:105 2007-3-14 8:40:17 得分:0


?

還可以用Hook WndProc來截獲
Top





管理 | 關(guān)閉窗口




網(wǎng)站簡介 - 廣告服務(wù) - 網(wǎng)站地圖 - 幫助信息 - 聯(lián)系方式
百聯(lián)美達美公司 版權(quán)所有 京ICP證020026號
Copyright ? CSDN.net, Inc. All rights reserved

posted on 2007-07-18 00:37 旅途 閱讀(1458) 評論(0)  編輯 收藏 引用 所屬分類: 深入windows

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久久久久毛片大屁完整版| 久久精品一本| 国产日韩在线一区二区三区| 久久久久九九视频| 另类酷文…触手系列精品集v1小说| 91久久在线| 中文精品在线| 在线不卡中文字幕播放| 99精品视频免费观看| 一本久久青青| 亚洲新中文字幕| 亚洲国产精品毛片| 免费成人毛片| 在线视频日韩| 国产一区再线| 久久久久国色av免费观看性色| 久久精品国产免费| 一本一本a久久| 久久久久久穴| 亚洲永久在线| 老司机aⅴ在线精品导航| 亚洲综合日韩在线| 日韩网站在线观看| 欧美成人精品一区| 国产一区二区日韩| 亚洲精品影院| 国内精品久久久久久影视8| 亚洲国产欧美一区二区三区同亚洲| 国产精品第2页| 亚洲第一综合天堂另类专| 国产欧美日韩不卡免费| 亚洲人成亚洲人成在线观看图片| 国产一区香蕉久久| 亚洲综合激情| 亚洲永久免费| 欧美日韩网站| 亚洲国产精品久久久久婷婷老年| 欧美巨乳在线| 欧美精品日韩一区| 亚洲狠狠丁香婷婷综合久久久| 亚洲三级电影在线观看| 欧美激情精品久久久六区热门 | 亚洲社区在线观看| 国产精品久久亚洲7777| 欧美日韩成人一区二区| 久久蜜桃资源一区二区老牛| 国产精品久久久久9999吃药| 亚洲国产专区| 亚洲国产影院| 欧美不卡三区| 亚洲国产成人精品女人久久久 | 欧美激情中文字幕一区二区| 黑人巨大精品欧美黑白配亚洲| 欧美一级精品大片| 欧美一区日韩一区| 国产欧美日韩伦理| 欧美一区二区在线看| 久久成人国产精品| 国产伦精品一区| 欧美一区二区在线| 久久亚洲综合网| 亚洲二区免费| 欧美高清在线视频观看不卡| 欧美激情影音先锋| 一区二区三区产品免费精品久久75| 欧美日韩免费在线| 亚洲一区二区三区免费视频| 久久黄色影院| 亚洲电影在线播放| 欧美区国产区| 亚洲欧美国产制服动漫| 久久久精品视频成人| 在线国产亚洲欧美| 欧美激情在线狂野欧美精品| 中文av字幕一区| 欧美亚洲视频在线看网址| 欧美成人午夜视频| 一区二区日韩精品| 久久先锋资源| 亚洲精品中文在线| 久久精品国产第一区二区三区最新章节| 亚洲精品资源美女情侣酒店| 国模叶桐国产精品一区| 狠狠久久亚洲欧美专区| 亚洲免费黄色| 亚洲欧美一区二区视频| 久久激情视频免费观看| 欧美日韩中文在线| 亚洲二区视频| 亚洲一区二区三区四区在线观看| 久久久久国产精品厨房| 国产精品嫩草久久久久| 亚洲国内自拍| 亚洲婷婷综合久久一本伊一区| 欧美一区不卡| 亚洲欧美另类国产| 欧美日韩在线播放一区| 国产精品一二一区| 韩日视频一区| 国产一区二区三区久久| 国产精品久久久久一区二区| 国产三级精品在线不卡| 激情综合中文娱乐网| 亚洲美女精品一区| 99在线精品视频在线观看| 欧美一区二区高清| 夜夜嗨av一区二区三区四季av | 一本色道久久| 久久永久免费| 国产一区二区三区久久久| 久久精品女人的天堂av| 久久精品30| 最近中文字幕日韩精品| 日韩一级黄色片| 亚洲第一黄色| 亚洲女ⅴideoshd黑人| 久久国产夜色精品鲁鲁99| 亚洲欧美电影院| 欧美日韩三级| 亚洲色图在线视频| 麻豆精品传媒视频| 欧美一区二区三区视频免费| 老司机精品视频网站| 国产日韩欧美在线| 午夜综合激情| 亚洲欧美日韩精品久久久久| 久久久久久久激情视频| 欧美日韩国产在线观看| 这里只有精品在线播放| 最新国产拍偷乱拍精品| 午夜久久久久| 在线看片第一页欧美| 亚洲毛片一区二区| 国产精品久久999| 亚洲欧美成人网| 亚洲国产精品va在线看黑人动漫| 久久亚洲精品视频| 欧美精品一区二区三| 亚洲国产精品传媒在线观看 | 亚洲精品国久久99热| 国产精品一二三四区| 欧美视频国产精品| 欧美日韩精品三区| 欧美日韩伦理在线免费| 欧美精品二区三区四区免费看视频| 老司机一区二区| 欧美91福利在线观看| 久久aⅴ国产欧美74aaa| 久久se精品一区二区| 亚洲性夜色噜噜噜7777| 日韩亚洲精品视频| 国产欧美一区二区三区沐欲| 亚洲午夜一二三区视频| 亚洲精品无人区| 欧美成人dvd在线视频| 欧美一区二区三区在线观看视频 | 国色天香一区二区| 国产欧美一区二区在线观看| 国产亚洲一区二区三区在线观看| 国产日韩综合| 尤物九九久久国产精品的特点| 狠狠色狠狠色综合系列| 亚洲福利久久| 夜夜爽夜夜爽精品视频| 亚洲午夜高清视频| 久久精品国产欧美亚洲人人爽| 美女999久久久精品视频| 久久综合色婷婷| 亚洲欧洲综合另类| 亚洲美女精品久久| 亚洲一区二区影院| 欧美激情一区二区在线 | 蜜桃av一区二区在线观看| 欧美96在线丨欧| 欧美日韩精品二区第二页| 国产精品日韩| 激情国产一区| 99视频一区二区| 午夜一区在线| 欧美高清hd18日本| 在线中文字幕不卡| 久久av一区| 欧美三级精品| 加勒比av一区二区| 亚洲一区二区免费在线| 毛片精品免费在线观看| 一区二区三区免费观看| 久久久久这里只有精品| 欧美性猛片xxxx免费看久爱| 影音先锋亚洲电影| 国产精品99久久久久久宅男| 久久一区二区三区av| 亚洲视频久久| 欧美国产日韩免费| 国内成人精品一区| 亚洲欧美日本日韩| 亚洲电影欧美电影有声小说| 亚洲无玛一区| 久久久久99精品国产片| 亚洲国产99|