消息的变迁

消息的变迁,第1张

概述Windows SDK 消息在主应用中堵塞读取,然后由同一的回调进行处理 while (GetMessage(&msg,...)) { TranslateMessage(&msg); //转换键盘消息(虚拟到字符) DispatchMessage(&msg); // 分派消息 } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wP

windows SDK@H_404_7@

消息在主应用中堵塞读取,然后由同一的回调进行处理@H_404_7@

while (GetMessage(&msg,...)) {
TranslateMessage(&msg); //转换键盘消息(虚拟到字符)
dispatchMessage(&msg); // 分派消息
}@H_404_7@

LRESulT CALLBACK WndProc(HWND hWnd,
UINT message,
WParaM wParam,
LParaM lParam)@H_404_7@

 @H_404_7@

MFC@H_404_7@

封装的SDK,增加映射表进行@H_404_7@

struct MSGMAP_ENTRY {
UINT nMessage;
LONG (*pfn)(HWND,UINT,WParaM,LParaM);
};@H_404_7@

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,
} ;@H_404_7@

对具体的回调,比如command,再加了一层包装@H_404_7@

struct MSGMAP_ENTRY _commandEntrIEs =
{
IDM_ABOUT,OnAbout,
IDM_fileOPEN,OnfileOpen,
IDM_SAVEAS,OnSaveAs,
} ;@H_404_7@

 @H_404_7@

附:@H_404_7@

PostMessage 和 SendMessage@H_404_7@

核心对象:@H_404_7@

event CreateEvent
mutex CreateMutex
semaphore CreateSemaphore
file Createfile
file-mapPing CreatefileMapPing
process CreateProcess
thread CreateThread@H_404_7@

@H_404_7@@H_404_7@

消息流是冒泡@H_404_7@

 @H_404_7@

 @H_404_7@

WinForm & Silverlight@H_404_7@

对对应的回调增加委托@H_404_7@

其中Silverlight的网络 *** 作都是异步的,而且刷新页面必须在主线程中@H_404_7@

 @H_404_7@

HTML JavaScript@H_404_7@

冒泡&捕获,先捕获后冒泡@H_404_7@

 @H_404_7@

Flex@H_404_7@

发送字符串的事件,冒泡@H_404_7@

 @H_404_7@

JAVA@H_404_7@

Java1.0 事件模型 : @H_404_7@

dispatchEvent()-postEvent()-handleEvent() @H_404_7@


@H_404_7@

Java 2 事件处理模型 :
@H_404_7@

Java2 处理事件时,没有采用 dispatchEvent()-postEvent()-handleEvent() 方式,采用了监听器类,每个事件类都有相关联的监听器接口。事件从事件源到监听者的传递是通过对目标监听者对象的 Java 方法调用进行的。(必须实现对应的接口) @H_404_7@

 @H_404_7@

AndroID的事件模型:  @H_404_7@

跟JAVA2一样,增加了indent的概念
@H_404_7@

Indent,可指定本地类,也可由系统进程进行选址 @H_404_7@

Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成androID各个组件之间的通讯。比如说调用 startActivity()来启动一个activity,或者由broadcaseIntent()来传递给所有感兴趣的 broadcaseReceiver,再或者由startService()/bindservice()来启动一个后台的service.所以可以看出来,intent主要是用来启动其他的 activity 或者service,所以可以将intent理解成activity之间的粘合剂。@H_404_7@

对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”。对于没有明确指出目标组件名称的Intent,则称之为“隐式 Intent”。AndroID系统使用IntentFilter 来寻找与隐式Intent相关的对象。@H_404_7@

广播接收器,可以拦截短信,然后返回true,系统默认SMS应用的回调将不会被调用。@H_404_7@

内部也有Looper+消息接收器,对消息接收器发送消息,如果没有指定looper,将在该对象所处的activity线程中执行。@H_404_7@

this.post(new Runnable(){
            public voID run(){
               在主线程中更新ui
            }
        });@H_404_7@

public voID setResult(Object obj,int key) {         if(obj!=null){             netHandler.setResult(obj,key);             Message msg=netHandler.obtainMessage();             msg.setTarget(netHandler);             msg.sendToTarget();         }     }@H_404_7@ 总结

以上是内存溢出为你收集整理的消息的变迁全部内容,希望文章能够帮你解决消息的变迁所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1031406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存