微軟視窗作業系统内部訊息流程基本認識簡介
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)。。。
SendMessage(hWnd, Msg, wParam, 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語言嚟冩程式,此書一定啱嗮你。因為此書由淺至深咁一一為你打開微軟視窗作業系统内部訊息流程疑問。當你讀完此書後,你一定講冇介绍錯吖~
以上乃喺本人個人見解;如有錯誤之處,請多多指點。
喺度大家要搞清楚一样嘢先;就喺微軟視窗作業系统里面嘅每一個控制項(例如:Button, Listview, Treeview, Edit, Static以及其它)都可以稱之為視窗(window)。因為當你建立一個新嘅視窗或控制項時,作業系统就编一個身份俾呢個視窗或控制項。而呢個身份又名為HWND嘞,直到此視窗或控制項被毁滅為止。
呢個可以喺下面嗰WIN32 API里面領略到出嚟;假設你要喺整個作業系统度揾某個視窗或控制項時,你會用FindWindow或FindWindowEx函式(API)而呢两個函式就運算番所揾到嘅視窗或控制項嘅HWND嘞。之後就。。。基本上可以講呢個視窗或控制項就被你為所欲為嘞。。。變大變细(MoveWindow),要殺(DestroyWindow),要現型或隐型(ShowWindow)就一切在你手中;咁除咗所提及嗰幾個函式,其實仲有好多好多等住你嚟學架~
家陣我哋以經知到HWND喺扮演一個好重要嘅角色喺整個界面程式里面。下一步就要再深入了解個作業系统内部點样好精确咁將啲滑鼠同键盤訊息送到每一個所指定嘅程式度嘞。當你明白咗呢一點後,你就會發觉其實整個作業系统,界面程式訊息交流嘅函式(PostMessage或SendMessage)喺走唔出四個引數串列(arguement)。。。
SendMessage(hWnd, Msg, wParam, 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語言嚟冩程式,此書一定啱嗮你。因為此書由淺至深咁一一為你打開微軟視窗作業系统内部訊息流程疑問。當你讀完此書後,你一定講冇介绍錯吖~
以上乃喺本人個人見解;如有錯誤之處,請多多指點。
相关文章推荐
- JavaScript系统学习之一 <基本语法,运算符,流程控制语句>
- 嵌入式系统编程语言-C语言开发流程及基本结构
- lunix系统的基本流程
- 机房收费系统基本流程
- 调用系统内部 searchUI的基本用法
- 地球气候系统模式cesm的基本运行流程
- 软件系统数据分析的基本流程
- linux centos 系统安装一些基本流程
- 安装windows 7系统的流程及基本问题解决
- sd卡拔出时系统内部的一些小流程
- 以ssm+mvc框架来开发一个系统的基本流程
- Tornado HTTP服务器的基本流程Tornado 底层I/O的内部实现
- linux键盘输入系统内部流程
- 5.Tornado HTTP服务器的基本流程---Tornado底层I/O的内部实现
- 将Vuforia程序发布到Windows10系统的基本流程
- Android系统 短彩信基本流程
- Linux系统中设置串口属性的基本流程
- 将Vuforia程序发布到Windows10系统的基本流程
- 第35课: 打通Spark系统运行内幕机制循环流程
- Ubuntu系统下Xen虚拟机的基本安装方法(代码创建)