没有合适的资源?快使用搜索试试~ 我知道了~
深入剖析MFC中Windows消息处理机制
3星 · 超过75%的资源 需积分: 10 7 下载量 52 浏览量
2008-12-06
11:11:45
上传
评论
收藏 42KB DOC 举报
温馨提示
试读
8页
深入剖析MFC中Windows消息处理机制的详细介绍,对理解windows消息处理有很大的帮助哦
资源推荐
资源详情
资源评论
深入剖析 MFC 中 Windows 消息处理机制
本人对 Windows 系统、MFC 谈不上有深入的了解,但对 MFC 本身包装 API 的机制很有
兴趣,特别是读了候 老师的《深入 浅出 MFC》后 ,感觉到 Visual C++ 的 Application
FrameWork 十分精制。在以前,我对 SDI 结构处理消息有一定的认识,但对于模式对话框
的消息机制不了解,读了《深入》一书也没能得到解决,近日,通过在网友的帮助和查阅
MSDN,自认为已经了解。一时兴起,写下这些文字,没有其它目的,只是希望让后来者
少走弯路,也希望和我一样喜欢“钻牛角尖”的人共同讨论、学习。如果你是牛人,那么你
现在要慎重考虑有没有充足的时间读这些幼稚文字。
正文:
Windows 程序和 DOS 程序的主要不同点之一是:Windows 程序是以事件为驱动、消
息机制为基础。如何理解?
举了例子,当你 CLICK Windows “开始”BUTTON 时,为什么就会弹出一个菜单呢?
当你单击鼠标左键时,操作系统中与 MOUSE 相关的驱动程序在第一时间内得到这个
信号[LBUTTONDOWN],然后它通知操作系统―――“嗨,鼠标左键被单击了!”,操作
系统得到这一信号后,马上要判断――用户单击鼠标左键,这是针对哪个窗口呢?如何判
断?这 很 简 单!当前 状 态 中,具有 焦 点 的窗口[ 或 控 件]就是 了 [ 这里当然 是 “ 开
始”BUTTON 了]。然后操作系统马上向这个窗口发送一条消息到这个窗口所在进程的消
息队列,消息内容应是消息本身的代号、附加参数、窗口句柄…等等了。那么,只有操作
系统才有资格发送消息至某一窗口的消息队列吗?不然,其它程序也有资格。你可以在你
的程序中调用:SendMessage 、PostMessage。这样,被单击的窗口得到了一条由操作
系统发送的包含 CLICK 的消息,操作系统已经暂时不再管窗口的任何事,因为它还要忙于
处理其它事务。你的程序得到一条消息后如何做呢?Windows 对于你在“开始”BUTTON 上
的单击事件做出如下反映:弹出一菜单。可是,得到消息到做出反映这一过程是如何实现
的呢?这就是本文讨论的主要内容[当然只是针对 MFC 了]。
我首先简要谈一下 SDI,然后会花更多文字描述模式对话框。
对于 SDI 窗口,你的应用程序类的 InitInstance()大约如下:
BOOL CEx06aApp::InitInstance()
{
……………
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CEx06aDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CEx06aView));
资源评论
- 东东06152012-11-28还行,分有点高。我看到别人有一个更好的版本,讲windows消息机制的
inter_helping
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功