在线看毛片视频-国产免费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>
  • 亚洲免费视频播放| 国产成人生活片| 少妇性饥渴无码a区免费| www.-级毛片线天内射视视| 毛片毛片毛片毛| 亚洲 激情 在线| 色婷婷成人在线| 182午夜视频| 国产对白在线播放| 免费一级淫片aaa片毛片a级| 激情五月六月婷婷| 91免费黄视频| 欧美精品一区二区三区免费播放| 日本福利视频在线| 中文字幕网av| 最新视频 - x88av| 乱妇乱女熟妇熟女网站| 亚洲 高清 成人 动漫| 北条麻妃视频在线| 五月六月丁香婷婷| 99热亚洲精品| 亚洲精品20p| 视色,视色影院,视色影库,视色网| 久久av高潮av| 日韩一级免费在线观看| 欧美一级免费在线| 国产深夜男女无套内射| 国产福利影院在线观看| 亚洲欧美一区二区三区不卡| 国产va亚洲va在线va| 热久久精品国产| 一本—道久久a久久精品蜜桃| 国产美女主播在线| 亚洲77777| 免费无码毛片一区二三区| 成年网站在线播放| 18黄暴禁片在线观看| 污污网站免费观看| 大肉大捧一进一出好爽视频| av噜噜在线观看| 欧美污视频网站| 亚洲五码在线观看视频| 99sesese| 99久久久无码国产精品6| 黄瓜视频免费观看在线观看www| 97干在线视频| 日本一区二区三区四区五区六区| 欧美精品成人网| 1024av视频| 又大又硬又爽免费视频| 91性高潮久久久久久久| 天天插天天操天天射| 国产视频一视频二| 成人免费a级片| 99精品视频免费版的特色功能| 已婚少妇美妙人妻系列| 日韩精品视频在线观看视频 | 国产女女做受ⅹxx高潮| 91免费国产精品| 日本xxx免费| 在线免费黄色网| 一区二区三区韩国| 免费裸体美女网站| 99草草国产熟女视频在线| 日韩a∨精品日韩在线观看| 免费的av在线| 欧美久久久久久久久久久久久久| 婷婷视频在线播放| 国内精品国产三级国产aⅴ久| 夜夜夜夜夜夜操| 人人爽人人爽av| 懂色av粉嫩av蜜臀av| 午夜激情影院在线观看| 欧美精品色视频| 国产一区二区片| 少妇高潮喷水在线观看| 日韩国产一级片| 男人亚洲天堂网| 五月天av在线播放| 天天综合五月天| 人妻少妇精品久久| 国产精品第12页| 伊人色在线视频| 免费特级黄色片| 亚洲熟妇av一区二区三区| 欧美精品性生活| 今天免费高清在线观看国语| 久草视频国产在线| 欧美在线观看视频网站| 亚洲妇熟xx妇色黄蜜桃| 久久精品xxx| 91精品无人成人www| 黄色小视频大全| 可以免费观看av毛片| 热久久久久久久久| 国产96在线 | 亚洲| 九九热免费在线观看| 992tv快乐视频| 天天影视综合色| 国产精品啪啪啪视频| 亚洲精品高清无码视频| 色一情一乱一乱一区91| www.xxx亚洲| 日韩成人手机在线| 激情黄色小视频| 人人妻人人添人人爽欧美一区| mm131亚洲精品| 欧美色图色综合| 福利在线小视频| 中文字幕丰满乱码| 又色又爽又高潮免费视频国产| 日本丰满大乳奶| a在线观看免费视频| 18岁网站在线观看| 日本xxx免费| 国产大片一区二区三区| 欧美日韩黄色一级片| 小泽玛利亚av在线| 国产在线视频三区| 日本中文字幕二区| 污污的网站18| 精品久久久久久无码国产| 97在线免费视频观看| 成人一区二区av| 大片在线观看网站免费收看| 午夜两性免费视频| 天天干天天综合| 奇米影音第四色| 91制片厂毛片| 久久人人爽av| 天天视频天天爽| av中文字幕网址| 中文字幕精品一区二区三区在线| www.日本xxxx| 69久久久久久| 97超碰人人看| a级免费在线观看| 日韩欧美不卡在线| 无码专区aaaaaa免费视频| 国产精品无码人妻一区二区在线| 欧美乱大交xxxxx潮喷l头像| 999在线观看视频| www.国产在线视频| 国产在线观看福利| 欧美日韩一区二区三区69堂| 日本中文字幕影院| 日韩不卡视频一区二区| av在线播放天堂| 黄色片在线免费| 自拍偷拍视频在线| 国产欧美精品aaaaaa片| 欧美精品久久久久久久免费| 久久婷婷国产精品| 亚洲黄色av片| 成熟丰满熟妇高潮xxxxx视频| 黄色片视频在线播放| 国产永久免费网站| 50度灰在线观看| 欧在线一二三四区| 女同性恋一区二区| 国产真实乱子伦| 欧美三级午夜理伦三级老人| 日本a在线免费观看| 欧美精品性生活| www.亚洲成人网| 一级黄色特级片| 日韩视频在线视频| 超碰超碰在线观看| 日韩精品视频在线观看视频| 天天操天天爽天天射| 国产一区二区四区| 日本美女视频一区| 日韩a在线播放| 少妇一晚三次一区二区三区| 国产精品少妇在线视频| 免费成人进口网站| 爱情岛论坛成人| 久久久久99精品成人片| 亚洲五月激情网| 婷婷六月天在线| 97视频在线免费播放| 樱花草www在线| 嫩草影院国产精品| 97国产精东麻豆人妻电影| 一级网站在线观看| 高清一区在线观看| 国产女女做受ⅹxx高潮| 亚洲av首页在线| 一女二男3p波多野结衣| 男人插女人下面免费视频| 久久久久亚洲av无码专区喷水| 亚洲综合欧美在线| 美女网站视频黄色| 国产精品99久久免费黑人人妻| 欧美精品自拍视频| av无码久久久久久不卡网站| 伊人网在线免费| 91香蕉视频导航| 欧美日韩亚洲自拍| 国产天堂在线播放|