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

旅途

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

子類化窗口如何才能接收到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


?

超類化也有一個問題,當(dāng)使用對話框的時候,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鉤子有一個問題,我一直不明白,就是當(dāng)有窗口創(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>
            一色屋精品视频免费看| 黄色一区二区在线| 欧美一区二区精品久久911| 亚洲欧洲视频| 久久久久91| 久久天天躁狠狠躁夜夜av| 久久人人爽人人爽爽久久| 久久久夜夜夜| 亚洲第一在线视频| 亚洲人体一区| 亚洲在线视频免费观看| 亚洲欧美在线网| 久久成人资源| 欧美激情一二三区| 国产精品护士白丝一区av| 欧美日韩在线观看一区二区| 欧美午夜片在线观看| 国产免费亚洲高清| 激情久久久久久久久久久久久久久久| 雨宫琴音一区二区在线| 亚洲美女毛片| 欧美怡红院视频| 欧美国产视频在线| 亚洲制服av| 牛牛影视久久网| 国产精品嫩草99a| 久久久久久久久综合| 欧美高清视频免费观看| 欧美一区高清| 久久久99国产精品免费| 亚洲综合日韩| 久久精品综合一区| 美女精品一区| 国产欧美91| 99国内精品久久| 久久五月激情| 亚洲高清在线观看一区| 亚洲精一区二区三区| 亚洲国产精品热久久| 国产精品黄色在线观看| 亚洲成人在线视频网站| 国内成人精品2018免费看| 99pao成人国产永久免费视频| 欧美一区二区观看视频| 欧美第一黄网免费网站| 国内外成人免费激情在线视频网站| 99热这里只有精品8| 欧美电影免费观看| 国产视频一区三区| 亚洲一级黄色| 欧美承认网站| 久久精品亚洲精品| 国产精品综合不卡av| 一区二区三区久久久| 欧美高清不卡在线| 久久久久久久成人| 国产女主播在线一区二区| 亚洲一区二区影院| 99国内精品久久| 欧美理论视频| 一本高清dvd不卡在线观看| 欧美.com| 久久精品免费电影| 国产一本一道久久香蕉| 欧美制服丝袜| 欧美一级夜夜爽| 国产日韩欧美综合精品| 欧美一区日韩一区| 亚洲欧美电影在线观看| 欧美日韩成人激情| 中日韩午夜理伦电影免费| 亚洲人在线视频| 欧美破处大片在线视频| 国产精品99久久99久久久二8| 亚洲国产精品久久久久婷婷老年 | 国产精品激情偷乱一区二区∴| 日韩一级大片| 一区二区三区高清在线| 国产精品网曝门| 久久久久久久久久久久久女国产乱 | 国产欧美日韩一区二区三区| 欧美一区二区精品久久911| 亚洲一区二区三区777| 国产精品影院在线观看| 久久精品国产在热久久| 久久精品亚洲乱码伦伦中文| 91久久国产综合久久| 亚洲精品一区二| 国产日韩欧美精品| 欧美二区在线看| 国产精品激情| 欧美成人中文字幕| 国产精品电影观看| 久久免费视频网站| 欧美精品一区二区高清在线观看| 日韩一级裸体免费视频| 亚洲一区二区三区中文字幕在线 | 亚洲高清久久| 亚洲国产一区二区三区青草影视 | 欧美午夜免费| 欧美gay视频| 国产精品久久二区| 美日韩免费视频| 欧美日韩一区二区三区在线观看免 | 在线日韩成人| 日韩视频一区二区三区| 久久蜜桃精品| 午夜影视日本亚洲欧洲精品| 亚洲视频视频在线| 亚洲国产精品嫩草影院| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久午夜色播影院免费高清| 欧美成人伊人久久综合网| 午夜精品福利视频| 欧美成人免费一级人片100| 久久福利电影| 欧美性理论片在线观看片免费| 久久久亚洲国产天美传媒修理工| 欧美日本成人| 欧美激情一区二区三区四区| 国产精品一区久久久久| 91久久久久久| 欧美午夜久久| 亚洲电影中文字幕| 国模叶桐国产精品一区| 亚洲午夜久久久久久尤物| 欧美日韩国产精品自在自线| 久久看片网站| 亚洲一区二区在线免费观看视频 | 欧美激情国产精品| 亚洲欧美日韩直播| 亚洲影院色无极综合| 亚洲一区二区精品视频| 国产一区二区久久| 亚洲青色在线| 亚洲欧美国产日韩天堂区| 国产精品毛片a∨一区二区三区| 亚洲在线观看免费视频| 免费日韩av电影| 欧美诱惑福利视频| 欧美日产一区二区三区在线观看| 久久综合网hezyo| 一区在线免费观看| 久久狠狠亚洲综合| 久久人91精品久久久久久不卡| 国产欧亚日韩视频| 欧美一区二区三区久久精品茉莉花| 亚洲在线视频| 国产精品卡一卡二| 亚洲专区免费| 亚洲欧美日本另类| 欧美亚州一区二区三区| 一区二区三区你懂的| 亚洲女爱视频在线| 国产毛片一区二区| 午夜在线一区| 美女视频一区免费观看| 伊人久久大香线蕉av超碰演员| 久久久91精品国产一区二区三区| 久久理论片午夜琪琪电影网| 国产在线不卡视频| 久久一区中文字幕| 欧美二区在线看| 中文无字幕一区二区三区| 欧美午夜不卡在线观看免费 | 亚洲人成久久| 欧美日韩高清区| 午夜欧美不卡精品aaaaa| 久久综合狠狠综合久久综合88| 亚洲国产经典视频| 欧美另类女人| 欧美尤物巨大精品爽| 亚洲国产成人精品视频| 99re6热只有精品免费观看| 欧美午夜女人视频在线| 欧美专区在线观看一区| 亚洲日本欧美| 久久久精品日韩欧美| 亚洲看片网站| 国产日韩综合| 欧美日韩精品在线播放| 亚洲欧美影院| 亚洲国产精品成人久久综合一区| 亚洲午夜小视频| 国语自产精品视频在线看| 欧美激情综合色| 欧美一区二区三区日韩| 亚洲人成毛片在线播放| 久久久久久9| 亚洲伊人网站| 亚洲国产小视频在线观看| 国产精品色午夜在线观看| 欧美成人精品在线播放| 欧美一区二区| 亚洲视频免费在线观看| 欧美激情一区二区三区全黄 | 亚洲一区二区免费在线| 亚洲国产精品成人| 欧美在线一二三区| 久久激情一区|