2003-08-27 [長年日記]

[Q3] SigmarionIII SDKでビルド

この前公開されたSigmarionIII SDKでビルドしてみることにしました。コンパイルオプションは以下のとおりです。

clarm -QRarchT -QRinterwork-return -MC -D_WIN32_WCE=410 \
 -DUNDER_CE=410 -DUNICODE -D_UNICODE -DARM -D_ARM_ -DARMV4I

この他に最適化オプションなどを追加します。リンカの指定は、-MACHINE:THUMBで。

[Q3] SigmarionIII SDKでビルド (2)

他に気づいた点としては以下のようなところでしょうか。

INVALID_SET_FILE_POINTERが定義されている

CE 3.00以前のSDKでは定義されていませんでしたが、CE 4.00以降では定義されているようです。

CoInitializeExのCOINIT_APARTMENTTHREADEDがサポートされている可能性がある

SigmarionIIIではサポートされていないようですが、DCOMがサポートされている環境ではアパートメントスレッドがサポートされていることがある場合があるようです(実はCE 3.0からサポートされているらしい)。

なので、ActiveXコントロールなどを使う場合には、COINIT_APARTMENTTHREADEDで呼び出してE_INVALIDARGが返ってきたらCOINIT_MULTITHREADEDで呼び出すようにすると良いようです。

[Q3] SigmarionIII SDKでビルド (3)

HPC2000のSDKで問題ないのになぜSigmarionIII SDKでビルドしようと思ったかというと、うまくいけばIWebBrowserを使ってHTMLメールビューが使えるかも知れないと思ったからなのです。結果的には使えましたが幾つかはまったので注意点を。

  • IInternetSecurityManagerやIInternetProtocolを使うにはurlmon.hを直接インクルードする必要があります
  • Shell.ExplorerというProgIdが登録されていないので、{8856F961-340A-11D0-A96B-00C04FD705A2}というCLSIDを直接指定する必要があります
  • WS_EX_CLIENTEDGEが自動で指定されないので呼び出し側から指定する必要があります
  • 当然ですが、atl.dllの代わりにatlce400.dllをロードします

というわけで、SigmarionIIIでHTMLメールが見れるようになりました。仕事関係で時々見る必要があるので、これはこれでなかなか便利そうです。DLCTL_FORCEOFFLINEがIE6でないと効かないというのがあったと思うので、後で確認する必要がありそうです。

[Q3] SigmarionIII SDKでビルド (4)

幾つか試してみたところでは、DLCTL_FORCEOFFLINEは効いているようで、このフラグを指定した場合には外部のリソースは取得しに行かないようです。

正規表現メモ

色々なツールでの正規表現の違いのまとめ。いつも、()だったか\(\)だったかとか忘れてしまうので参考になります。

[Q3] 今日のNightly Build

今日のNightly BuildからSigmarion III版を追加しました。と思ったら、atlce40.dllはデフォルトでは入っていないように見えるのでアーカイブに追加する必要がありそうです。

デフォルトの.menusや.keymapもHTMLメールをサポートするように変更する必要がありそうです。しかし、Windows系、HPC系、Pocket PC系に追加してSigmarion III用をメンテナンスするのも大変です。かといってHTMLメールをサポートしていないHPC系にHTMLメール用のメニューを追加してしまうのもいまいちですね。.menusや.keymapの中に簡単な条件式でも書けるようにしてしまいましょうか。

RDスタイル

試しに今日は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関係のオプションもグレーアウトするようにした方が良いですね。

[Q3] 今日のNightly Build (2)

Windows版が起動できなくなっています。

[Q3] #if

#if _WIN32_WCE < 300
 (1)
#elif _WIN32_WCE >= 300
 (2)
#else
 (3)
#endif

このような#ifを書くと、_WIN32_WCEが定義されていない場合には、(1)を使ってしまいます。以前から何度もはまったことがあるのにまたやってしまいました。。。

[Q3] バグトラック

時々エラーが起きるのは、どうもCookieのせいのようです。エラーが起きたときには、ブラウザからq3.snak.org/bts/を対象に発行しているCookieを削除してみてください。


トップ «前の日記(2003-08-26) 最新 次の日記(2003-08-28)»