<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Message</title><link>https://sourceforge.net/p/sakura-editor/wiki/Message/</link><description>Recent changes to Message</description><atom:link href="https://sourceforge.net/p/sakura-editor/wiki/Message/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 11 Nov 2012 01:27:51 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/sakura-editor/wiki/Message/feed" rel="self" type="application/rss+xml"/><item><title>WikiPage Message modified by novice123</title><link>https://sourceforge.net/p/sakura-editor/wiki/Message/</link><description>[内部構造](Design)＞Window Messageの流れ 

# Window Messageの流れ #
2005/3/12

ここではエディタに対してウィンドウメッセージが送られたときにどのような処理が行われるかを説明します．

## メッセージの入り口 ##
メッセージの入り口としては''CEditWnd''クラス， ''CEditDoc''クラス，''CEditView''クラスが考えられます．

### CEditViewのWindow Procedure ###
**WM_COMMAND**メッセージは''CEditWnd::DispatchEvent''に転送します．それ以外の物は''CEditView::DispatchEvent''に転送します．**WM_COMMAND**を特別扱いするのは，**WM_COMMAND**の処理が''CEditWnd::DispatchEvent''に書かれているからです．

### CEditDocのWindow Procedure ###
**WM_ENTERMENULOOP**, **WM_EXITMENULOOP**以外のメッセージであればActiveなEditViewの''DispatchEvent''にメッセージを転送します．

### CEditWndのWindow Procedure ###
''CEditWnd::DispatchEvent''にメッセージを転送します．

### CEditWnd::DispatchEvent ###
メッセージが**WM_COMMAND**のときには2つの可能性があります．1つはカスタマイズ不可能な箇所からやってきたコマンドでもう1つはカスタマイズ可能なコマンドです．

カスタマイズが不可能な物についてはその場で処理されます．

カスタマイズが可能な物については''CEditDoc::HandleCommand''にコマンド番号が渡されます．

キーボードアクセラレータからのコマンドの場合はキーコードに基づく仮のコマンドIDが入っているので，本物のIDに変換してから送ります．

 

__**WM_COMMANDのパラメータ**__

上位ワード|内容|下位ワード
-|-|-
０|メニューからのコマンド|Command ID
１|アクセラレータからのコマンド|Command ID
その他|コントロールからのメッセージ|Control ID


### CEditDoc::HandleCommand ###
分割されたViewの間のフォーカス移動についてはここで処理を行います．それ以外のコマンドについてはActiveなViewの''HandleCommand''に引き渡されます．

### CEditView::HandleCommand ###
カスタマイズ可能なコマンドの殆どはここで処理されます．この関数ではコマンドIDによって対応する処理関数への振り分けを行います．処理関数は ''CEditView::Command_XXXXXX'' (XXXXXはコマンド名) と名付けられています．
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">novice123</dc:creator><pubDate>Sun, 11 Nov 2012 01:27:51 -0000</pubDate><guid>https://sourceforge.netff4424c75e4bceaff2a5ba028963b37daef54565</guid></item></channel></rss>