視窗訊息的傳遞與處理.pptVIP

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
視窗訊息的傳遞與處理

視窗的訊息處理 製作 視窗訊息的傳遞與處理 訊息映射表的宣告 利用MFC撰寫視窗程式時,應用程式回應訊息的機制是靠建立訊息映射表完成。 在負責回應訊息的類別裡,加入訊息映射表的宣告。 視窗訊息的傳遞與處理 在該類別外,運用以下語法建立訊息映射表,宣告欲處理的訊息回應項目。 視窗訊息的傳遞與處理 訊息回應項目的定義,依據訊息種類的不同可分為二種: 一、標準系統訊息 是由作業系統產生的訊息,比如:滑鼠左鍵被按下或移動滑鼠…等。 二、命令訊息 大致是由使用者建立的功能表、工具列、控制項…等視窗元件,被選取時產生。 視窗訊息的傳遞與處理 一、標準系統訊息 回應這類訊息之訊息項目名稱的命名規則為ON_WM_XXX。 下敘述將於訊息映射表定義回應滑鼠移動訊息之訊息回應項目: 視窗訊息的傳遞與處理 回應標準系統訊息的函數名稱,MFC均已定義,如:回應滑鼠移動訊息的函數名稱為『OnMouseMove』。 以下為於程式內宣告該函數的語法: 視窗訊息的傳遞與處理 二、命令訊息 回應這類訊息的類別必須衍生自CCmdTarget類別。 以下為這類訊息回應項目的定義語法: 與標準系統訊息不同的是,回應命令訊息的訊息回應項目,必須定義欲回應之命令訊息的代號與回應的函數名稱。 視窗訊息的傳遞與處理 宣告訊息處理函數時,必須在該函數前加上afx_msg。 以下為宣告訊息處理函數的語法: 宣告OnExit()函數處理ID_EXIT1訊息的訊息回應項目的語法如下: 函數的宣告方式如下: 視窗訊息的傳遞與處理 對於一些大部份視窗程式常使用的命令,MFC預先定義了標準命令識別子(Standard Command IDs),並完成對應的回應函數。 使用MFC已定義的命令訊息,可以不必定義回應函數,也不必宣告回應的函數。 以下將以建立MyFrame類別的訊息映射表為例,說明如何建立訊息映射表。 視窗訊息的傳遞與處理 以上宣告裡,定義MyFrame類別接收將並處理四種訊息: 一是點選功能表中,ID為ID_EXIT1的功能表項目,並以OnExit()函數處理該訊息。 另外三個則是滑鼠發出的標準系統訊息,而處理標準系統訊息的函數之名稱已由MFC預設。 Message程式範例 以下是Message程式範例的執行結果: Message程式範例 使用資源 一、功能表資源:以下是程式範例所使用的功能表資源。 Message程式範例 二、選項代號: 訊息映射表與回應函數的建立 訊息映射表的建立 在MyFrame類別的定義裡,將宣告該類別擁有訊息映射表,並在類別定義外,建立MyFrame類別所接受訊息的映射項目。 訊息映射表與回應函數的建立 訊息的回應函數 以下敘述為程式範例的回應函數: 訊息映射表與回應函數的建立 滑鼠訊息傳入的參數 產生滑鼠訊息時,一併把滑鼠產生此訊息的特殊按鍵狀態用nFlags傳入回應函數,而滑鼠游標的座標,由point參數傳入。 下表是nFlags參數傳入旗標的意義: 視窗的訊息處理 -訊息映射表與回應函數的建立 預設的命令訊息 在訊息映射表中,並沒有看到回應File功能表Exit選項的項目,但點選該選項時,卻可關閉視窗,這是因為MFC已經為ID_APP_EXIT預設了回應函數。 利用滑鼠繪圖 如何繪圖以及裝置內文的建立 第一步,必須為這個視窗的工作區建立畫布物件,或稱裝置內文物件,然後,再呼叫畫布物件提供的繪圖函數,即可在畫布上繪圖。 利用滑鼠繪圖 回應滑鼠訊息並繪出滑鼠軌跡點 Message程式範例對於滑鼠訊息的回應,是讓滑鼠在視窗的工作區中留下移動軌跡。 一、按下滑鼠左鍵 回應滑鼠左鍵按下OnLButtonDown()函數,將呼叫SetCapture()函數,設定目前執行的視窗應用程式。 利用滑鼠繪圖 二、移動滑鼠 移動滑鼠時,作業系統將不斷傳出滑鼠的移動訊息,OnMouseMove()函數也將不斷被呼叫。 利用滑鼠繪圖 三、放開滑鼠左鍵 當放開滑鼠左鍵時,則將釋放視窗程式接收滑鼠訊息的權力,並交還給作業系統。 利用滑鼠繪圖 有關滑鼠訊息的相關函數 利用滑鼠繪圖 將滑鼠軌跡繪製於畫布上的函數說明 訊息方塊的使用與視窗的破壞 訊息方塊的使用 按下視窗框架中File功能表的Exit選項時,將執行視窗的關閉。 視窗關閉前,將蹦現一個訊息方塊。 訊息方塊的使用與視窗的破壞 以下程式碼為回應Exit選項被點選動作的OnExit()函數。 訊息方塊的使用與視窗的破壞 訊息方塊的使用與視窗的破壞 訊息方塊的使用與視窗的破壞 訊息方塊的使用與視窗的破壞 破壞視窗 按下訊息方塊的 確定 按

文档评论(0)

daoqqzhuan2 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档