2003-03-04 [長年日記]

メインメニューのカスタマイズ

コンテキストメニューだけでなくてメインメニューもカスタマイズできるようにした方が良いかなということで(というより、Pocket PCとかを考えたときに自分が楽というあたりも考え合わせて^^;)、動的に作成したメニューをウィンドウにつける方法を調べてみました。

普通のWindowsは当然SetMenuですね。

HPC/PsPCはCommandBar_InsertMenubarExを使うらしいです。2番目の引数を0にして、3番目の引数にLPTSTRに無理やりキャストしたHMENUを渡すということのようです。別のAPIにすればいいのに相変わらずすごいごまかし方です。

で、Pocket PCの場合には、SHMENUBARINFOのdwFlagsにSHCMBF_HMENUを指定して、SHCreateMenuBarすればいい様子。でも、どのメンバにHMENUを指定すればいいのかが書いていないという。。。

IMAP4でサーバ上で動作する言語

たとえば、IMAP4でメールをダウンロードするときに、テキスト系のパートだけ取りたいとすると、まずBODYSTRUCTUREを送って構造を取得してからその構造に基づいてもう一度FETCHしなくてはいけないので最低でも二往復が必要になります。これを、サーバ側に簡単な言語を導入して一発で出来るようにならないものでしょうか。たとえば、

FETCH 1 (BODY[Content-Type="text/*"
    and Content-Disposition!="attachment"]
  BODY[HEADER Content-Type!="text/*"
    or Content-Dispotition="attachment"])

とかすると、Content-Typeがtext/*でContent-DispositionがattachmentでないパートはMIMEヘッダと本文を、それ以外のパートはヘッダのみを返してくれるとか。実際にやるとなるともっと細かいことを考えなくてはいけないんですけど、こういう方向性のプロジェクトがあっても良さそうですね。

もっというならば、XMLに対してXPathがあるように、MIME構造に対してMIMEPathみたいなものを定義して、それを使ってごにょごにょするとか出来るとよいかも。と、考えていると、QMAILのマクロも実はマルチパートの扱いがあんまり上手じゃないので、その辺も含めてやってみたくなったりして。

インポート時の改行コード

インポートするときには、素のメッセージを扱うというスタンスだったので改行コードがCRLFでないとちゃんとインポートできなかったのですが、某MLのアーカイブがLFのみだったので、LF,CR,CRLFのどれでもインポートできるように修正。