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

旅途

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

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

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








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


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


?

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

Top


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


?

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


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


?

關注,只知道超類化方法
Top


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


?

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


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


?

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


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


?


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

MFC下的方法類似,
Top


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


?

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


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


?

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


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


?

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

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

Top


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


?

虛擬繼承它,可以嗎?
Top


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


?

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


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


?

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


回復人: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);
加入額外的數據。

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


回復人: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


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


?

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


Top


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


?

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


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


?

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

Top


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


?

還可以用Hook WndProc來截獲
Top





管理 | 關閉窗口




網站簡介 - 廣告服務 - 網站地圖 - 幫助信息 - 聯系方式
百聯美達美公司 版權所有 京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>
            国产精品久久久久高潮| 亚洲精品日韩在线观看| 久久www成人_看片免费不卡| 亚洲三级视频| 久久午夜电影网| 午夜精品影院| 亚洲日韩视频| 欧美激情在线免费观看| 欧美黑人一区二区三区| 亚洲欧洲一区二区三区在线观看| 亚洲大胆视频| 日韩亚洲成人av在线| 夜夜嗨av一区二区三区免费区| 亚洲精品资源美女情侣酒店| 亚洲网友自拍| 久久成人综合视频| 免费在线一区二区| 欧美日本一区| 国产亚洲网站| 亚洲精品视频二区| 亚洲综合视频在线| 久久网站热最新地址| 国产无一区二区| 亚洲高清视频在线观看| 999亚洲国产精| 亚洲欧美综合网| 欧美激情亚洲一区| 这里只有视频精品| 男人天堂欧美日韩| 国产精品中文字幕欧美| 亚洲国产一二三| 欧美伊久线香蕉线新在线| 欧美成人三级在线| 在线一区日本视频| 久久天堂精品| 国产精品亚洲综合一区在线观看| 黄色国产精品| 性色一区二区| 一区二区欧美在线| 欧美激情亚洲| 在线观看一区视频| 欧美影院成年免费版| 91久久在线播放| 久久精彩视频| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲高清视频在线观看| 久久久久久综合| 亚洲欧美日韩综合| 国产精品theporn88| 亚洲精品视频中文字幕| 女女同性精品视频| 久久精品视频免费观看| 国产片一区二区| 亚洲欧美一区二区激情| 亚洲三级影片| 欧美日韩午夜剧场| 一区二区三区波多野结衣在线观看| 久久久噜噜噜久久人人看| 亚洲综合二区| 国产美女精品人人做人人爽| 亚洲一区在线免费观看| 日韩午夜激情| 欧美视频在线观看免费| 久久久久久亚洲综合影院红桃| 女主播福利一区| 亚洲美女91| 欧美亚州韩日在线看免费版国语版| 亚洲国产精品久久久| 久久精品久久综合| 激情久久婷婷| 日韩天天综合| 日韩一区二区精品| 欧美精品在线看| 欧美黄色日本| 国产午夜精品久久久| 亚洲人成在线观看一区二区| 狠狠色丁香久久婷婷综合_中| 亚洲一区尤物| 亚洲一区二区三区视频| 欧美高清自拍一区| 亚洲国产视频直播| 亚洲国产精品电影在线观看| 久久国产精品久久国产精品| 欧美中文字幕第一页| 国产欧美精品一区二区色综合 | 免费久久99精品国产| 欧美一区二区三区的| 国产欧美一区二区三区久久人妖| 亚洲一区二区av电影| 亚洲图片欧洲图片日韩av| 欧美日韩成人一区二区| 一区二区三区四区五区视频| 亚洲主播在线| 国模精品一区二区三区色天香| 久久成人精品视频| 亚洲高清在线观看一区| 久久疯狂做爰流白浆xx| 久久久噜噜噜久久人人看| 亚洲第一精品电影| 欧美精品久久99久久在免费线| 亚洲免费在线观看| 免费成人小视频| 亚洲专区在线视频| 激情综合中文娱乐网| 国产精品jvid在线观看蜜臀| 久久综合久久久久88| 亚洲欧美综合精品久久成人| 最新高清无码专区| 老司机67194精品线观看| 中文av字幕一区| 亚洲国产日韩欧美在线99| 国产精品日韩电影| 国产精品成人在线观看| 欧美女同在线视频| 欧美激情一区二区三区高清视频| 久久先锋影音| 美女精品国产| 免费日韩视频| 欧美mv日韩mv亚洲| 欧美精品一区二区三区蜜臀| 欧美成人精品不卡视频在线观看| 欧美一区二区观看视频| 欧美主播一区二区三区| 久久久精品一区| 久久在线视频| 国产精品福利在线观看网址| 国产伦精品一区二区三区免费| 欧美日韩国产影片| 国产九九精品视频| 狠狠色2019综合网| 亚洲精品免费观看| 午夜精品短视频| 欧美黄网免费在线观看| 亚洲第一天堂av| 亚洲毛片在线免费观看| 一区二区三区日韩精品视频| 午夜视频在线观看一区| 欧美一区二区三区在线看| 久久精品一级爱片| 欧美激情在线观看| 久久精品一区二区| 国产精品久久久久久一区二区三区| 国产精品综合网站| 99视频在线精品国自产拍免费观看| 亚洲天堂av在线免费观看| 久久综合中文| 午夜精品久久久久久久蜜桃app| 久久精品九九| 国产精品一区二区久久久| 最新国产成人av网站网址麻豆| 欧美一区二区精品| 在线视频日韩精品| 欧美高清影院| 99re6这里只有精品| 欧美 日韩 国产在线| 欧美中日韩免费视频| 国产精品久久一卡二卡| 亚洲图片在区色| 亚洲视频狠狠| 国产精品亚洲综合| 久久国产夜色精品鲁鲁99| 午夜日韩在线| 激情久久一区| 亚洲欧洲在线看| 国产精品麻豆va在线播放| 亚洲午夜久久久久久久久电影网| 日韩天堂av| 国产精品私人影院| 久久另类ts人妖一区二区| 久久riav二区三区| 在线成人小视频| 亚洲人成网站999久久久综合| 欧美精品激情blacked18| 亚洲一区国产视频| 久久久久久久网站| av成人毛片| 久久久久久久97| 亚洲欧美精品suv| 久久夜精品va视频免费观看| 一区二区精品在线| 久久久免费精品| 午夜精品久久久久久久99樱桃 | 亚洲欧美中文另类| 一区二区三区 在线观看视频| 欧美在线视频在线播放完整版免费观看| 在线精品国产欧美| 亚洲欧美三级伦理| 中日韩高清电影网| 欧美插天视频在线播放| 久久亚洲色图| 精品9999| 久久精品久久99精品久久| 亚洲欧美日韩国产| 国产精品成人观看视频免费 | 亚洲国产精品视频一区| 国内成+人亚洲| 午夜精品久久久久久久久久久| 亚洲欧美日韩一区二区| 欧美日韩久久精品| 中文久久精品|