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

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

攔截Windows消息

攔截Windows消息

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

C++ Builder不愧為Borland公司的優(yōu)秀產(chǎn)品,用它來開發(fā)Windows程序非常快捷高效,但在編程過程中你也會發(fā)現(xiàn)它的一些限制性,讓你無法實現(xiàn)自己的想法。比如你無法在修改表單的系統(tǒng)菜單;比如使用跟蹤欄時,你找不到StartTrack和EndTrack事件,而偏偏你的程序需要這兩個事件。Windows API編程中,你就不會有這些麻煩,只需處理一下WM_SYSCOMMAND和WM_HSCROLL(或WM_VSCROLL)消息,就能實現(xiàn)上述功能。Windows API的缺點是編程十分麻煩,太多的時間要耗在細節(jié)上面,但它的功能卻是最強大的。C++ Builder的VCL在功能上只是它的一個子集,因為VCL是在API的基礎(chǔ)上封裝的,封裝時舍棄了一些不常用到的功能。但是程序員的想象力沒有被封裝,他們總懷著更大的熱情去實現(xiàn)別出心裁的想法,修改系統(tǒng)菜單和給跟蹤欄增加StartTrack和EndTrack事件只是其中的小把戲而已。可是VCL并沒有這些功能,怎么辦?
  幸好,Borland公司沒有把路堵死,而是留了個后門——允許程序員自己攔截并處理Windows消息,就象API編程一樣。于是,辦法有了...

------ 方法
攔截Windows消息需要以下幾步:
在表單頭文件內(nèi)(如Unit1.h)
1. 在類聲明中建立消息映射表,把某條消息的處理權(quán)交給自定義的消息處理函數(shù)。

BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(Windows消息名,TMessage,消息處理函數(shù)名)
MESSAGE_HANDLER(...)
END_MESSAGE_MAP(TForm)



2. 在類聲明的private區(qū)內(nèi)聲明消息處理函數(shù)。

private: // User declarations
void __fastcall 消息處理函數(shù)名(TMessage &Message);
在表單文件內(nèi)(如Unit1.cpp)



3. 寫出消息處理函數(shù),在這里實現(xiàn)你需要的功能。比如

void __fastcall MainForm::OnWMHScroll (TMessage &Message)
{
... // 在此加入你自己的代碼
TForm::Dispatch(&Message);
}


------ 解釋
1. 關(guān)于TMessage
TMessage是VCL預(yù)定義的結(jié)構(gòu),定義如下:
struct TMessage
{
unsigned int Msg; //消息
int WParam; //字參數(shù)
int LParam; //長字參數(shù)
int Result; //消息結(jié)果
};


2. 關(guān)于TForm::Dispatch(&Message)
  自定義的消息處理函數(shù)末尾最好加一句TForm::Dispatch(&Message),這一句的作用是讓消息繼續(xù)傳遞下去。如果沒有這一句,消息將被完全攔截,VCL類可能由于得不到消息而無法實現(xiàn)正常功能。

------ 實例一:修改系統(tǒng)菜單
   有一些程序,主窗口很小,菜單也沒有,如果想加入關(guān)于或設(shè)置對話框,最好的辦法是拿系統(tǒng)菜單開刀。Windows API編程中,修改系統(tǒng)菜單與實現(xiàn)其他功能一樣,不太容易,也不會太難。但在C++ Builder中,表單類(TForm)沒有提供有關(guān)系統(tǒng)菜單的任何屬性與方法,實現(xiàn)其他功能易如反掌,而修改系統(tǒng)菜單似乎難于上青天。
   還好,Borland公司允許程序員自已處理Window消息,于是機會來了!

一、用Window API函數(shù)修改系統(tǒng)菜單
  假定表單名為MainForm,設(shè)置MainForm::OnCreate()函數(shù):

用GetSystemMenu(MainForm->Handle,false)取得系統(tǒng)菜單句柄;
用AppendMenu,DeleteMenu,ModifyMenu函數(shù)修改系統(tǒng)菜單,把新的ID號賦于自定義的菜單項。
  這時運行程序,可以看到系統(tǒng)菜單也被修改,但自定義的菜單項卻不能被響應(yīng)。

二、攔截WM_SYSCOMMAND消息以響應(yīng)自定義的菜單項
在表單頭文件內(nèi)(如Unit1.h)

在表單類定義末尾加入消息響應(yīng)表,取得WM_SYSCOMMAND消息的處理權(quán)
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_SYSCOMMAND,TMessage,OnWMSysCommand)
END_MESSAGE_MAP(TForm)
在表單類定義的private區(qū)內(nèi)加入消息處理函數(shù)聲明
private: // User declarations
void __fastcall OnWMSysCommand(TMessage& Message);
在表單文件內(nèi)(如Unit1.h)
寫出消息響應(yīng)函數(shù)
void __fastcall TForm1::OnWMSysCommand(TMessage& Message)
{
if(Message.WParam==ID_SysMenu_MyItem)
{
// Your Code Here, Do Something
}
TForm::Dispatch(&Message);
}
三、完整程序示例

實例二:給跟蹤欄增加OnStartTrack和OnEndTrack事件

  當(dāng)跟蹤欄用于進度控制時,OnStartTrack和OnEndTrack很可能是你需要的事件。比如在控制多媒體播放進度的場合,當(dāng)用戶移動滑塊時,你需要OnStartTrack事件讓播放停止,需要OnEndTrack事件定位新的播放位置。但Borland公司沒有提供這兩個事件,我等編程愛好者只好自力更生,打攔截Windows消息的主意了。

一、攔截WM_HSCROLL消息,給跟蹤欄增加OnStartTrack和OnEndTrack事件

在表單頭文件內(nèi)(如Unit.h)

在表單類定義末尾加入消息響應(yīng)表,把WM_HSCROLL消息處理權(quán)交給OnWMHScroll函數(shù)。
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_HSCROLL,TMessage,OnWMHScroll)
END_MESSAGE_MAP(TForm)
在表單類定義的private區(qū)內(nèi)加入OnWMHScroll函數(shù)聲明。
private: // User declarations
void __fastcall OnWMHScroll(TMessage &Message);
在表單類定義的private區(qū)內(nèi)加入StartTrack和EndTrack函數(shù)聲明。
private: // User declarations
void __fastcall TrackBar1StartTrack(TObject *Sender);
void __fastcall TrackBar1EndTrack(TObject *Sender);
在表單文件內(nèi)(如Unit.cpp)
寫出OnWMHScroll函數(shù),使它能根據(jù)消息參數(shù)調(diào)用StartTrack和EndTrack函數(shù),在實際意義上產(chǎn)生OnStartTrack和OnEndTrack事件。
寫出StartTrack和EndTrack函數(shù)。
如果是垂直跟蹤欄,把上面的WM_HSCROLL改為WM_VSCROLL即可。



尾聲
  Borland C++ Builder編程中,攔截Windows消息是一項高級編程技術(shù),能讓你盡量挖掘Windows的潛力,尤其讓曾用API編程的程序員感到心慰。攔截Windows消息是API盡情發(fā)揮的舞臺,當(dāng)VCL不能為你做什么時,請想起底層的API。

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

本類教程下載

系統(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>
  • 久章草在线视频| 亚州精品一二三区| 粗暴91大变态调教| 国产乱叫456| 欧美美女性视频| 日本免费a视频| www.99在线| 波多野结衣作品集| 五月天开心婷婷| 99蜜桃臀久久久欧美精品网站| 中文字幕线观看| 国产v亚洲v天堂无码久久久| 欧美日韩午夜爽爽| 性chinese极品按摩| 日韩视频在线免费看| 少妇高潮大叫好爽喷水| 91日韩视频在线观看| 欧美这里只有精品| 肉色超薄丝袜脚交| 超碰在线播放91| 欧美a v在线播放| 青青青在线观看视频| 三级av免费看| www.色.com| 亚洲免费av一区| 日韩欧美xxxx| 免费在线观看毛片网站| 日日橹狠狠爱欧美超碰| 黄色网在线视频| 欧洲美女和动交zoz0z| 免费看涩涩视频| 污污网站免费观看| 午夜久久久精品| 亚洲国产高清av| 久久久999免费视频| 精品国产av无码一区二区三区| 7777在线视频| 嫩草视频免费在线观看| 老司机久久精品| 91pony九色| 国产精品久久久久久久99| 91女神在线观看| 亚洲精品mv在线观看| 中文字幕 日韩 欧美| 蜜桃福利午夜精品一区| 成年人三级视频| 久久综合久久网| 成年人免费在线播放| 一级黄色香蕉视频| 人人干人人干人人| 中文字幕精品在线播放| 高清欧美精品xxxxx| 少妇无码av无码专区在线观看| 亚洲色欲综合一区二区三区| 超碰在线97免费| 黄色小视频大全| 免费在线精品视频| 久草热视频在线观看| 久久久久久蜜桃一区二区| 99亚洲精品视频| 天天干天天操天天玩| 成人在线观看黄| 亚洲啊啊啊啊啊| 九九九九九九九九| 中文字幕第100页| 最近免费中文字幕中文高清百度| 国产一区二区片| 91免费视频黄| 熟女视频一区二区三区| 亚洲这里只有精品| 在线观看免费视频高清游戏推荐| 啊啊啊一区二区| www.av中文字幕| 亚洲人精品午夜射精日韩| 91手机视频在线| 性久久久久久久久久久久久久| 538在线视频观看| 日韩av手机版| 日韩一级理论片| 黑森林精品导航| 欧美午夜aaaaaa免费视频| 亚洲福利精品视频| 玖玖爱视频在线| 超碰在线超碰在线| 手机在线视频你懂的| 乱子伦一区二区| 加勒比海盗1在线观看免费国语版| av动漫免费观看| 老司机午夜免费福利视频| 麻豆映画在线观看| 可以看毛片的网址| 成人免费观看cn| 污污网站免费看| 182午夜视频| 免费cad大片在线观看| 人妻少妇精品无码专区二区| 无码aⅴ精品一区二区三区浪潮| 国产精品免费观看久久| 粉色视频免费看| 午夜啪啪福利视频| 亚洲熟妇无码另类久久久| 999精品视频在线| 国产卡一卡二在线| 中文字幕日本最新乱码视频| 亚洲不卡视频在线| 黄色成人在线免费观看| 欧美牲交a欧美牲交aⅴ免费真| 激情视频免费网站| 国产精品视频二| 黄色手机在线视频| 亚洲色成人www永久在线观看 | 97在线免费公开视频| 成年人三级黄色片| 久久久亚洲国产精品| 99视频在线视频| 97超碰在线人人| 亚洲精品永久视频| 国产在线观看福利| 992tv成人免费观看| wwwxxx黄色片| 国产免费裸体视频| 日韩精品你懂的| 日韩欧美精品在线观看视频| caoporm在线视频| 激情五月婷婷久久| www国产精品内射老熟女| 亚洲精品偷拍视频| 日本超碰在线观看| 国产福利一区视频| 日韩a∨精品日韩在线观看| 国产九九九视频| 天天影视色综合| 人人干人人视频| 北条麻妃在线观看| 久久综合色视频| 农民人伦一区二区三区| 影音先锋成人资源网站| 免费黄频在线观看| 91制片厂毛片| 日日干夜夜操s8| 蜜桃福利午夜精品一区| 午夜精品在线免费观看| 男人女人黄一级| 国产又猛又黄的视频| 久草福利视频在线| 国产免费又粗又猛又爽| 午夜免费福利在线| 午夜久久福利视频| 亚洲午夜激情影院| 日本高清免费在线视频| www.亚洲一区二区| 黄色网在线视频| 国产最新免费视频| 久久久久久久久久福利| 亚洲乱码国产一区三区| 成人性生交免费看| 2021狠狠干| 黄页免费在线观看视频| 日韩av三级在线| 一级片视频免费观看| 手机在线免费毛片| 大伊香蕉精品视频在线| 欧美日韩国产精品激情在线播放| 中文字幕第36页| 亚洲天堂一区二区在线观看| 欧美日韩视频免费在线观看| 久久在线中文字幕| 别急慢慢来1978如如2| 三级黄色片免费看| 欧美一级中文字幕| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 免费在线看黄色片| 91国视频在线| 少妇熟女一区二区| 国产极品美女高潮无套久久久 | 久久婷五月综合| 久久综合久久久久| 伊人色在线观看| 亚洲 高清 成人 动漫| 亚洲欧美天堂在线| 成人精品视频在线播放| 中文字幕第88页| 黄色免费视频大全| 国产又爽又黄ai换脸| 国产男女无遮挡| 男人的天堂视频在线| 国产91色在线观看| 无码av天堂一区二区三区| 日本高清久久久| 色婷婷综合久久久久中文字幕| 午夜探花在线观看| 久久成年人网站| aa免费在线观看| 国产免费黄色小视频| 强伦女教师2:伦理在线观看| 日本va中文字幕| 男人透女人免费视频| 男人插女人视频在线观看| 色乱码一区二区三区熟女| 老司机午夜性大片|