前回、次は飛んでくるメッセージの解説する。言ったので、今回はメッセージ編です。ほとんどMSDNからのコピーです。変更は日本語にしたぐらいです。日本語のMSDNにも書いてくれればいいのに。英語できない子なので、超てきとうです。誤訳だらけだと思います。なんかあったらどんどん突っ込んでください。関係なく飛んでくるメッセージ。WM_TODAYCUSTOM_QUERYREFRESHCACHEシステムからだいたい2秒ごとに飛んできます。前回書いたようにアイテムの高さを変えたいときはこのメッセージに応答します。構造体へのポインタLPARAM予約されています。0を指定しなければなりません。戻り値アイテムを更新する必要があるならばTRUE、そうでないならFALSEを返します。WM_TODAYCUSTOM_CLEARCACHEアイテムがアンロードされる時に送られます。このメッセージを受信したときに、アイテムはキャッシュしているデータを破棄しなければなりません。cbCachedDataメンバを更新しないといけないらしいです。構造体へのポインタLPARAM予約されています。0を指定しなければなりません。次にSelectabilityが1の時。Selectabilityが1の時はOSが選択を自動で処理してくれるので何もしなくていいことになってます。アイテムが選択された状態で、ユーザがアクションキー*1を押した場合は、(1,1)の位置でタップしたということでシステムが処理してくれます。アイテムとしてはWM_LBUTTONDOWNメッセージに応答するとSelectabilityが1の時の処理は完了。次にSelectabilityが2の時飛んでくるメッセージ。WM_TODAYCUSTOM_ACTIONアイテムが選択されているときにユーザがアクションキー*2を押したときに送信されます。引数WPARAMアクションキーの仮想キーコードが格納されます。(VK_RETURNです。)LPARAMこのパラメータは使用されません。戻り値は無視されますWM_TODAYCUSTOM_LOSTSELECTIONアイテムの選択が解除されたとき*3に飛んできます。戻り値は無視されます。WM_TODAYCUSTOM_RECEIVEDSELECTIONアイテムが選択されたときに送信されます。上下にあるアイテムがWM_TODAYCUSTOM_USERNAVIGATIONメッセージにFALSEを返したときに送信されます。Selectabilityに関係なくWM_ERASEBKGNDとWM_PAINTを受け取ります。選択を受け取る場合はTRUEを返します。FALSEを返すと選択を受けずにシステムは次のアイテムを選択状態にしようとします。WM_TODAYCUSTOM_USERNAVIGATIONアイテムが選択状態のときにユーザがナビゲーションキー*6を押したときに飛んできます。アイテムの中で複数選択項目があるときとか、このメッセージに応答していろいろしたらいいです。引数WPARAMVK_UPとかVK_DOWNみたいな仮想キーコードがはいってます。LPARAMパラメータは使用されません戻り値メッセージを処理したときはTRUEを返さなければなりません。FALSEだった場合はアイテムの選択は解除されます。システムから送信されるメッセージは以上です。そんなに多くないです。これらのメッセージに必要なら応答しつつ、ほかのメッセージを普通のWindowsプログラムと同じように処理しておけばだいたい大丈夫です。最後にアイテムから親ウィンドウに送るメッセージ。TODAYM_DRAWWATERMARK指定した領域にTodayの背景を描画してもらいます。引数WPARAM予約されています。0を指定しなければなりません。成功するとTRUE、失敗するとFALSEが返ります。TODAYM_GETCOLOR現在のTodayで使われている各種色設定を取得します。引数WPARAMどの色を取得するかを指定しますLPARAM予約されています。0を指定しなければなりません。WPARAMにはTODAYCOLOR_TEXT*7、TODAYCOLOR_HIGHLIGHT*8、TODAYCOLOR_HIGHLIGHTEDTEXT*9を指定できます。指定した色に対するCOLORREFが返ります。TODAYM_REQUESTREFRESHこれを送信するとシステムはすべてのアイテムに対してWM_TODAYCUSTOM_QUERYREFRESHCACHEを送るそうです。このメッセージはWM6以降で対応してます。引数WPARAMパラメータは使用されませんLPARAMパラメータは使用されません戻り値0の時、シェルはメッセージを処理しました。戻り値はシェルがメッセージを処理したか。あって、実際に画面がリフレッシュされたかどうかは関係ありません。TODAYM_TOOKSELECTIONいますぐアイテムを選択して欲しいときに送信します。タップされたときとか。メッセージを送信するとWM_TODAYCUSTOM_RECEIVEDSELECTIONが送信されます。このときWPARAMが0ならばこのメッセージは成功です。以上Today用に拡張されたメッセージでした。前回のサンプルのSelectabilityを1にすると、タップしたり十字キーで選択できるようになります。Selectabilityを2にすると、たぶん選択できません。メッセージに応答してないからですね。次回はSelectabilityを2にした場合のアイテム。