您的位置:首页 > 其它

微軟視窗作業系统内部訊息流程基本認識簡介

2004-09-08 22:17 211 查看
無論你嘅界面程式喺用C++,MFC,VB,VB.NET,C++.NET,C#或其它語言嚟冩都走唔出WIN32API嘅框框(如果你用Spy++去探討就明白架嘞);事關到最後嗰作業系统(OS)依然用PostMessage命令將個訊息(message)轉送到所指定嘅界面度。又或者我哋都可以用SendMessage命令嚟达到某種效果。

喺度大家要搞清楚一样嘢先;就喺微軟視窗作業系统里面嘅每一個控制項(例如:Button, Listview, Treeview, Edit, Static以及其它)都可以稱之為視窗(window)。因為當你建立一個新嘅視窗或控制項時,作業系统就编一個身份俾呢個視窗或控制項。而呢個身份又名為HWND嘞,直到此視窗或控制項被毁滅為止。

呢個可以喺下面嗰WIN32 API里面領略到出嚟;假設你要喺整個作業系统度揾某個視窗或控制項時,你會用FindWindow或FindWindowEx函式(API)而呢两個函式就運算番所揾到嘅視窗或控制項嘅HWND嘞。之後就。。。基本上可以講呢個視窗或控制項就被你為所欲為嘞。。。變大變细(MoveWindow),要殺(DestroyWindow),要現型或隐型(ShowWindow)就一切在你手中;咁除咗所提及嗰幾個函式,其實仲有好多好多等住你嚟學架~

家陣我哋以經知到HWND喺扮演一個好重要嘅角色喺整個界面程式里面。下一步就要再深入了解個作業系统内部點样好精确咁將啲滑鼠同键盤訊息送到每一個所指定嘅程式度嘞。當你明白咗呢一點後,你就會發觉其實整個作業系统,界面程式訊息交流嘅函式(PostMessage或SendMessage)喺走唔出四個引數串列(arguement)。。。
SendMessagehWndMsgwParam lParam

除咗以上嗰四個基本引數串列,微軟視窗作業系统内部訊息仲有個獨特之處。。。就喺每個視窗或控制項都有自己嘅名稱格式。例如:

格式 訊息種纇
ABM Application desktop toolbar
BM Button control
CB Combo box control
CBEM Extended combo box control
CDM Common dialog box
DBT Device
DL Drag list box
DM Default push button control
DTM Date and time picker control
EM Edit control
HDM Header control
HKM Hot key control
IPM IP address control
LB List box control
LVM List view control
MCM Month calendar control
PBM Progress bar
PGM Pager control
PSM Property sheet
RB Rebar control
SB Status bar window
SBM Scroll bar control
STM Static control
TB Toolbar
TBM Trackbar
TCM Tab control
TTM Tooltip control
TVM Tree-view control
UDM Up-down control
WM General window

重依四個引數串列中嘅第一個就以經好清楚指明個訊息喺要送去某個拥有相同hWnd嘅視窗或控制項。基于hWnd喺整個作業系统里面喺獨一無二。。。所以個訊息可以好精确咁送到去嗰視窗或控制項度嘞。除非。。。有其它高手用SubClass或Hooking嚟偷或讀取你界面嘅訊息。。。咁你就好有可能失去依啲訊息嘞。

當然,整個微軟視窗作業系统更喺冇咁簡單啦。。。但喺我所提及嗰两個函式喺最常見兼常用嗰隻。如果你想對微軟視窗作業系统内部訊息流程更深一層了解嘅話;就不妨去你左近嘅書局揾一揾以下依两本我稱之為秘笈嘅参考書嚟研究研究吓啦。我就以經拥有同讀過嘞。

Definitive Guide To WIN32API (作者:Charles Petzold)
此書教你如何運用native windows programming application interfaces (APIs)同C語言嚟冩程式。讀完此書你會認識更多更多嘅Win32 APIs,打從GWES,Dlls,IPC,Multitask到Multithreading。





Subclass & Hooking with Visual Basic (作者:Stephen Teilbet)
如果你喺用VB語言嚟冩程式,此書一定啱嗮你。因為此書由淺至深咁一一為你打開微軟視窗作業系统内部訊息流程疑問。當你讀完此書後,你一定講冇介绍錯吖~






以上乃喺本人個人見解;如有錯誤之處,請多多指點。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: