この前公開されたSigmarionIII SDKでビルドしてみることにしました。コンパイルオプションは以下のとおりです。
clarm -QRarchT -QRinterwork-return -MC -D_WIN32_WCE=410 \ -DUNDER_CE=410 -DUNICODE -D_UNICODE -DARM -D_ARM_ -DARMV4I
この他に最適化オプションなどを追加します。リンカの指定は、-MACHINE:THUMB
で。
他に気づいた点としては以下のようなところでしょうか。
CE 3.00以前のSDKでは定義されていませんでしたが、CE 4.00以降では定義されているようです。
SigmarionIIIではサポートされていないようですが、DCOMがサポートされている環境ではアパートメントスレッドがサポートされていることがある場合があるようです(実はCE 3.0からサポートされているらしい)。
なので、ActiveXコントロールなどを使う場合には、COINIT_APARTMENTTHREADEDで呼び出してE_INVALIDARGが返ってきたらCOINIT_MULTITHREADEDで呼び出すようにすると良いようです。
HPC2000のSDKで問題ないのになぜSigmarionIII SDKでビルドしようと思ったかというと、うまくいけばIWebBrowserを使ってHTMLメールビューが使えるかも知れないと思ったからなのです。結果的には使えましたが幾つかはまったので注意点を。
というわけで、SigmarionIIIでHTMLメールが見れるようになりました。仕事関係で時々見る必要があるので、これはこれでなかなか便利そうです。DLCTL_FORCEOFFLINEがIE6でないと効かないというのがあったと思うので、後で確認する必要がありそうです。
幾つか試してみたところでは、DLCTL_FORCEOFFLINEは効いているようで、このフラグを指定した場合には外部のリソースは取得しに行かないようです。
今日のNightly BuildからSigmarion III版を追加しました。と思ったら、atlce40.dllはデフォルトでは入っていないように見えるのでアーカイブに追加する必要がありそうです。
デフォルトの.menusや.keymapもHTMLメールをサポートするように変更する必要がありそうです。しかし、Windows系、HPC系、Pocket PC系に追加してSigmarion III用をメンテナンスするのも大変です。かといってHTMLメールをサポートしていないHPC系にHTMLメール用のメニューを追加してしまうのもいまいちですね。.menusや.keymapの中に簡単な条件式でも書けるようにしてしまいましょうか。
試しに今日はRDスタイルで書いてみました。なかなか書きやすいですが、せっかくのキーワードプラグインでのバグトラックなどへのリンクが、Wikiスタイルだと、
[[BTS:1]]
でよかったのが、RDスタイルだと、
((%kw 'BTS:1'%))
と書かなくてはいけないのがちょっと面倒です。
((<BTS:1>))
みたいな書き方をkwプラグインに展開してくれるとうれしいかも。
たとえば、atl.dllが入っていない環境ではHTML Modeを表示しないとか、qscrypto.dllがない環境ではS/MIME Modeを表示しないとかできるようにした方が良さそうです。そうすれば、HPC系とSigmarion IIIでデフォルトの設定ファイルを共有できるかもしれません。
ついでに、qscrypto.dllがない状況ではSSL関係のオプションもグレーアウトするようにした方が良いですね。