消息的变迁
来源:互联网 发布:淘宝店铺模块 编辑:程序博客网 时间:2024/05/22 22:26
Windows SDK
消息在主应用中堵塞读取,然后由同一的回调进行处理
while (GetMessage(&msg,...)) {
TranslateMessage(&msg); //转换键盘消息(虚拟到字符)
DispatchMessage(&msg); // 分派消息
}
LRESULT CALLBACK WndProc(HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
MFC
封装的SDK,增加映射表进行
struct MSGMAP_ENTRY {
UINT nMessage;
LONG (*pfn)(HWND, UINT, WPARAM, LPARAM);
};
struct MSGMAP_ENTRY _messageEntries[] =
{
WM_CREATE, OnCreate,
WM_PAINT, OnPaint,
WM_SIZE, OnSize,
WM_COMMAND, OnCommand,
WM_SETFOCUS, OnSetFocus,
WM_CLOSE, OnClose,
WM_DESTROY, OnDestroy,
} ;
对具体的回调,比如command,再加了一层包装
struct MSGMAP_ENTRY _commandEntries =
{
IDM_ABOUT, OnAbout,
IDM_FILEOPEN, OnFileOpen,
IDM_SAVEAS, OnSaveAs,
} ;
附:
PostMessage 和 SendMessage
核心对象:
event CreateEvent
mutex CreateMutex
semaphore CreateSemaphore
file CreateFile
file-mapping CreateFileMapping
process CreateProcess
thread CreateThread
消息流是冒泡
WinForm & Silverlight
对对应的回调增加委托
其中Silverlight的网络操作都是异步的,而且刷新页面必须在主线程中
Html javascript
冒泡&捕获,先捕获后冒泡
Flex
发送字符串的事件,冒泡
JAVA
Java1.0事件模型:
dispatchEvent()-postEvent()-handleEvent()
Java 2事件处理模型:
在Java2处理事件时,没有采用dispatchEvent()-postEvent()-handleEvent()方式,采用了监听器类,每个事件类都有相关联的监听器接口。事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的。(必须实现对应的接口)
Android的事件模型:
跟JAVA2一样,增加了indent的概念
Indent,可指定本地类,也可由系统进程进行选址
Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用startActivity()来启动一个activity,或者由broadcaseIntent()来传递给所有感兴趣的BroadcaseReceiver, 再或者由startService()/bindservice()来启动一个后台的service.所以可以看出来,intent主要是用来启动其他的activity 或者service,所以可以将intent理解成activity之间的粘合剂。
对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”。对于没有明确指出目标组件名称的Intent,则称之为“隐式 Intent”。Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。
广播接收器,可以拦截短信,然后返回true,系统默认SMS应用的回调将不会被调用。
内部也有Looper+消息接收器,对消息接收器发送消息,如果没有指定looper,将在该对象所处的activity线程中执行。
this.post(new Runnable(){
public void run(){
在主线程中更新ui
}
});
public void setResult(Object obj,int key) {
if(obj!=null){
netHandler.setResult(obj,key);
Message msg=netHandler.obtainMessage();
msg.setTarget(netHandler);
msg.sendToTarget();
}
}
- 消息的变迁
- 今天的心情变迁
- UserAgent的历史变迁
- MySpace的变迁
- 程序语言的微妙变迁
- 软件工程的变迁
- UserAgent的历史变迁
- UserAgent的历史变迁
- 博客的变迁
- 中国近代疆域的变迁
- TCP的状态变迁
- UserAgent的历史变迁
- 软件工程的变迁
- 杂谈:行业的变迁
- UserAgent的历史变迁
- DevOps系统的变迁
- 百度空间的变迁
- hadoop的版本变迁
- DriverEntry程序
- 非.aspx/.aspx.cs 中引用Response,Request等使用类
- BREW资源BAR文件格式分析
- jquery.autocomplete.js用法(转载)
- U盘光盘启动PE安装Xp系统的200%成功经验 分享
- 消息的变迁
- Use shell to monitor long time query
- IsMultiThread
- ubuntu/linux flash中文乱码 的解决
- 正则在JS中的使用
- atl 组件应用程序使用的注意事项
- OnClientClick 不执行的两种常见问题
- 正则在JS中的使用
- 非线性方程求解