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

旅途

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

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

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








一般子類化窗口的時(shí)候是無(wú)法接收到WM_CREATE,WM_NCCREATE消息的,因?yàn)樽宇惢臅r(shí)候,已經(jīng)錯(cuò)過(guò)了處理這些消息的時(shí)機(jī),有什么方法可以接收到這些消息呢?


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


?

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

Top


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


?

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


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


?

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


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


?

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


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


?

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


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


?


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

MFC下的方法類似,
Top


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


?

記錯(cuò)了,全局子類化需要一個(gè)窗口句柄,超類化不需要
Top


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


?

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


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


?

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

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

Top


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


?

虛擬繼承它,可以嗎?
Top


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


?

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


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


?

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


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


?

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

如果是自己手工創(chuàng)建的控件,創(chuàng)建時(shí)就可傳入必要的數(shù)據(jù),通過(guò)超類化在WM_CREATE中將數(shù)據(jù)保存。
=====================================
這樣一來(lái),對(duì)話框里的子窗口控制將仍然無(wú)法獲得WM_CREATE消息,
因?yàn)槲蚁胍某惖拇翱谶^(guò)程是個(gè)通用的,通過(guò)額外的參數(shù)來(lái)辨識(shí)是哪個(gè)窗口對(duì)象,
從而把消息先交該窗口對(duì)象處理,再調(diào)用原系統(tǒng)窗口過(guò)程,這樣就更
hChildWnd=GetDlgItem(hDlg, ID_xxx);
SetWindowLong(hChildWnd, GWL_USERDATA, (LONG)pData);的時(shí)候已經(jīng)錯(cuò)過(guò)了WM_CREATE消息
Top


回復(fù)人:chehw(chehw) ( 兩星(中級(jí))) 信譽(yù):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) ( 兩星(中級(jí))) 信譽(yù):110 2007-3-13 11:08:09 得分:0


?

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


Top


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


?

你說(shuō)的這個(gè)就是全局子類化
Top


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


?

這個(gè)問(wèn)題是有點(diǎn)疙疙瘩瘩的,看你的用途了,如果僅僅是做一些初始化的處理(繪制處理如皮膚等除外),以對(duì)話框?yàn)槔梢杂靡恍┳兺ǖ姆椒ǎ?br>1。子窗口初始化無(wú)法create消息,不過(guò)可以觸發(fā)PreSubClassWnd虛函數(shù)。
2。自己創(chuàng)建需要截獲消息的子窗口。終究不是所有的子窗口你都需要create消息的:)
3。如樓上各位所說(shuō)的超類或者鉤子處理了,不過(guò)個(gè)人建議如果不是皮膚等工作,還是避免處理大范圍的消息為好

Top


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


?

還可以用Hook WndProc來(lái)截獲
Top





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




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

posted on 2007-07-18 00:37 旅途 閱讀(1458) 評(píng)論(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>
            久久久久综合网| 午夜免费日韩视频| 午夜精品福利在线| 亚洲国产高清在线| 国产伦精品一区二区三区在线观看 | 欧美成人一区二区| 久久精品av麻豆的观看方式| 亚洲永久视频| 一区二区三区www| 91久久在线观看| **欧美日韩vr在线| 狠狠干综合网| 国产在线观看一区| 国产色综合久久| 国产欧美日韩精品丝袜高跟鞋 | 欧美日韩高清在线观看| 欧美顶级艳妇交换群宴| 99热精品在线观看| 欧美久久一区| 欧美国产激情二区三区| 尤物99国产成人精品视频| 国产精品亚洲美女av网站| 欧美体内she精视频| 欧美全黄视频| 欧美经典一区二区| 欧美成人精品福利| 免费永久网站黄欧美| 久久人人精品| 久久人人爽人人爽爽久久| 久久久精品999| 久久精品免费| 久久久久成人精品| 久久亚洲美女| 欧美.com| 欧美日韩二区三区| 欧美午夜宅男影院| 国产精品伦理| 国产一级久久| 好吊色欧美一区二区三区视频| 国产亚洲午夜高清国产拍精品| 国产日韩在线看| 狠狠综合久久| 亚洲国产视频a| 亚洲高清自拍| 亚洲免费观看| 一本色道久久88亚洲综合88| 亚洲一区二区三区三| 性色av一区二区三区红粉影视| 欧美一区二区高清在线观看| 久久久成人网| 亚洲第一色在线| 欧美激情精品久久久| 亚洲肉体裸体xxxx137| 在线亚洲美日韩| 午夜天堂精品久久久久| 久久免费视频观看| 欧美精品导航| 国产精品免费网站在线观看| 国产在线视频欧美| 最新亚洲激情| 亚洲一区在线看| 久久深夜福利| 亚洲啪啪91| 午夜精品视频在线观看一区二区| 久久久久久夜精品精品免费| 欧美极品一区| 欧美激情免费观看| 性欧美video另类hd性玩具| 亚洲欧美成人一区二区三区| 亚洲图片在线| 亚洲一区二区三区中文字幕在线| 亚洲天堂av图片| 亚洲视频大全| 亚洲欧美日韩一区二区| 欧美一区二区精品| 久久综合影音| 国产精品久久久久久福利一牛影视 | 国产欧美日韩精品丝袜高跟鞋| 国产乱码精品| 亚洲激情视频网站| 亚洲免费中文| 欧美电影电视剧在线观看| 夜夜精品视频一区二区| 久久精品免费播放| 欧美午夜寂寞影院| 玉米视频成人免费看| 亚洲一区区二区| 欧美肥婆在线| 欧美一区二区在线视频| 欧美三级中文字幕在线观看| 在线看无码的免费网站| 欧美一区二区三区精品| 亚洲精品久久嫩草网站秘色| 久久国产日本精品| 国产精品多人| 亚洲精品一区二区三区樱花 | 欧美色视频日本高清在线观看| 在线播放豆国产99亚洲| 欧美亚洲一区在线| 亚洲日本国产| 久久夜色精品亚洲噜噜国产mv| 国产精品美女黄网| 日韩亚洲欧美成人| 农村妇女精品| 欧美一乱一性一交一视频| 欧美视频中文字幕在线| 亚洲人成亚洲人成在线观看图片| 久久xxxx精品视频| 这里只有视频精品| 欧美久久久久久久| 亚洲青涩在线| 欧美96在线丨欧| 久久国产一区二区三区| 国产欧美日韩91| 午夜精品免费在线| 亚洲午夜激情| 欧美系列亚洲系列| 在线亚洲自拍| 亚洲毛片在线观看.| 欧美国产日韩免费| 亚洲欧洲三级电影| 欧美国产日韩一区二区| 久久影院亚洲| 亚洲福利视频免费观看| 美女视频黄免费的久久| 久久精品女人| 激情久久久久久| 久久综合久久美利坚合众国| 久久高清免费观看| 国内外成人在线视频| 久久久久久夜| 久久精品国产欧美激情| 一区二区三区在线看| 麻豆精品国产91久久久久久| 久久久水蜜桃| 亚洲福利视频网| 亚洲电影专区| 欧美精品18+| 一区二区三区波多野结衣在线观看| 亚洲精品男同| 国产精品v日韩精品| 亚洲欧美成人| 午夜久久久久久| 狠狠色丁香久久综合频道| 噜噜噜在线观看免费视频日韩| 久久久www| 亚洲欧洲在线视频| 日韩视频精品在线观看| 国产精品分类| 欧美淫片网站| 久久精品日韩一区二区三区| 亚洲高清一二三区| 99re66热这里只有精品4| 午夜综合激情| 国产亚洲成精品久久| 老鸭窝91久久精品色噜噜导演| 久久中文字幕一区| 亚洲精品偷拍| 在线视频一区观看| 国产午夜精品全部视频在线播放| 久久夜色精品国产噜噜av| 麻豆精品在线视频| 99热免费精品在线观看| 一本色道久久| 国产亚洲综合在线| 欧美国产日韩在线| 欧美日精品一区视频| 欧美一区二区三区在线看| 久久精品一本| 99精品欧美一区二区三区综合在线| 一区二区三区精品| 国精品一区二区三区| 91久久精品国产91久久性色| 国产精品乱码妇女bbbb| 男人插女人欧美| 欧美日韩在线一二三| 久久久视频精品| 欧美剧在线免费观看网站| 香港成人在线视频| 另类av一区二区| 亚洲一级在线观看| 久久久久久久久久久久久9999| 日韩亚洲欧美精品| 欧美一站二站| 一本一本久久a久久精品综合麻豆| 午夜精彩国产免费不卡不顿大片| 亚洲欧洲三级电影| 午夜亚洲激情| 一本不卡影院| 久久精品人人爽| 亚洲自拍偷拍一区| 裸体素人女欧美日韩| 欧美一级大片在线观看| 女人天堂亚洲aⅴ在线观看| 欧美一区二区大片| 欧美精品在线极品| 蜜桃av一区二区在线观看| 国产精品v欧美精品v日韩 | 国产精品扒开腿爽爽爽视频| 欧美a级片一区|