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@ 总结
以上是内存溢出为你收集整理的消息的变迁全部内容,希望文章能够帮你解决消息的变迁所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)