シグマリオン3と従来プラットフォーム(CE3.0およびそれ以前)の互換性について ・実行可能ファイル(exeおよびdll)のスタティックリンクでの関数解決 CE3.0以前では実行可能ファイルはリンクしているdllが存在しさえすればインポートしている関数(正確にはシンボル)がそのDllからエクスポートされていない場合でも実行・ロード可能だった。ただし実行中にエクスポートされていない関数呼び出しがあるとアプリが死んでいた。 シグマリオン3ではインポートしている関数がDllからエクスポートされていない場合、エラーになり実行できない(無効なアプリケーションエラーになる)ようになった。 適切なエラー処理が行われるようになった訳だが、PocketPCアプリを動かす際の小細工はちょっと面倒になった。 ・ファイルダイアログ(GetOpenFileName,GetSaveFileName) OPENFILENAME構造体でフラグOFN_ENABLETEMPLATE、OFN_ENABLETEMPLATEHANDLEがサポートされた。(ヘルプでは未サポートとなっているが) これらのフラグを指定した場合OPENFILENAME構造体のhInstance、lpTemplateNameを正しく設定しないとエラーになる。 CE3.0以前はこれらのパラメータは無視されてエラーが発生することは無かったが、シグマリオン3では正しく設定しないとファイルダイアログが出ない。 なおOFN_ENABLETEMPLATEやOFN_ENABLETEMPLATEHANDLEを指定した際のファイルダイアログ上の各コントロールのIDは以下のとおり。 ファイルリスト(ListView)→1600、ファイル名(Edit)→1701、種類(ComboBox)→1700 いい加減なパラメータ指定をしているソフトが多いようでファイルダイアログが表示されず問題になっているケースもあるようだ。 ・SIP系API coredll.dllから一切エクスポートされていないため、これらのAPIをスタティックリンクしているプログラムは実行することが出来ない。Acrobat Reader for PocketPCなどを無理やりインストールしても実行できないのはこれが原因。 ・wave系API waveOutReset、waveOutPauseの呼び出しがロックすることがあるらしい?(詳細不明) ・その他(あまり紹介されていないと思われる点を中心に) ファイルダイアログで複数種類のファイル選択が出来るようになった。その一方デスクトップにはアクセスできなくなった。 コントロールパネルがシェル(エクスプローラ)の一部ではなく独立したアプリケーションになった。 coredll内にエラーメッセージを持っているのでFormatMessageで簡単にエラー値をエラーメッセージにすることが出来る。 InternetExplorerのProxy設定がダイヤルアップ毎にできるようになった。