VS200XとIE8βのJScriptの相性が悪い件

VS200X(VS2005, VS2008)でスマートデバイス向けにMFCアプリケーションを新規作成しようとすると…ウィザードが表示されるまでは良いのだけど、プラットホームを選択するウィザード画面を表示しようとすると墜ちる :|

正確な現象としてはウィザードが墜ちて、新規プロジェクトの作成画面へ戻ってしまう。

なので、前に経験した『Slashcolon /: » VS2005でスマートデバイス用MFCアプリが作れない?』に似てるけど違う現象 :arrow:

多くのデバイスのSDKを疑ったり、複数の開発環境(eVC, VS6, VS2003, VS2005, VS2008)が入っていることを疑ったり、色々遠回りをしたわけですが…同じ現象に陥っている方を発見 :idea:

まさに同じ現象 :!: IE8βをIE7に戻して回避されたようですが…わたしは、とりあえず原因はハッキリしたのでウィザードは別環境で動かすことにしてIE8のまま様子を見ることにしました ;)

JScript.dllをIDEのフォルダにコピーしたりDLLの検索順で回避できないか探ってみましたが難しいみたいですね~何か良い方法があれば教えてくれるとうれしいです。

しかし、調べる過程でウィザードの中身をチラ見してたんですけど…なぜ、わざわざウィザード部分をHTML+JScriptなんて構成で作ってるんですかね。それほどメリットがあるとは思えないんですけど :|

追記 2009-01-27 10:00:09
IE8 RC1がリリースされJScript.dllのバージョンが上がり以下の強引な修正を行わなくても良くなったようです。
直ったのはうれしいのですが、直し方を見つけた途端にRC1リリースで直るなんて :shock:

追記 2009-01-24 23:12:09
ほぉ~HTML+JScriptな構成になっているのは「ウィザードのカスタマイズ」にあるようにカスタムウィザードを作れるようになんですね。だとしても良い選択とは思えないんですけどね。

あ、それは置いといて…ものすごく強引なんですけど以下のファイル(VS2008の場合)を編集してIE8βのままでもウィザードが動くようになりました。

  C:\Program Files\Microsoft Visual Studio 9.0\VC\VCWizards\SmartDeviceAppWiz\
  mfc\Application\html\1041\Platforms.htm

に書かれている以下の例外処理を2箇所ほどコメントアウトして握りつぶしました。

  window.external.Finish(document, 'cancel');

さらにInitDocumentの中の以下の4行もコメントアウトして、初期表示時に1個のプラットホームをデフォルト選択する処理を停止しました。

  AvailableSDKs.options.remove(0);
  SelectedSDKs.options.add(node);
  SelectedSDKs.selectedIndex = 0
  AvailableSDKs.selectedIndex = -1;

それほど悪い動作はしないと思いますが…あくまで自己責任でお願いします ;)

追記 2009-03-30 09:29:08
どうも、IE8正式版にして同様の問題が再発しているようですが…上記の対策では直らないです。と言うか現象が微妙に異なりますし。ほんとMS何してるの :|

Be Sociable, Share!

TrackBack URL :

Comments

  1. TI
    1月 26th, 2009 | 3:14 PM

    初めまして、いきなりのコメント失礼致します。

    私は、WindowsCE向けのアプリケーションをeVC++で開発している者です。
    今回、画面上にグリッドコントロールを使用したいので、いろいろ調査していたところ、ここのサイトに飛んできました。

    10/24~10/25の記事を参考に、MFCGridControlを組み込んでみました。
    とても参考になり、感謝しています。

    そこでお願いなのですが、グリッド上のセルをコンボボックスに変更したいのですが、うまくいきません。MFCGridControlのサンプルコードを元にコンボボックスに変更するコードを組み込んだのですが、コンパイルは通るものの、コンボが表示されません。
    ご存じでしたら、MFCGridControlでグリッド上のセルをコンボボックスに変更する方法をご教授願えないでしょうか?

  2. 1月 26th, 2009 | 4:50 PM

    TIさん。どうもはじめまして。

    MFCGridControlの使い方をすっかり忘れてまして、でもコンボボックスはセルに貼り付けた記憶があるので辿ってみました ;)

    たぶん、CodeProjectのMFCGridControlからsourceのみのzipをダウンロードされたのではないかと…思うのですが違いますでしょうか?

    であれば、demo projectの方もダウンロードしてみてください。こちらを展開するとNewCellTypesというフォルダが在り、そこにGridCellComboクラスが実装されています。

    これを利用すれば、きっとコンボボックスが貼れるものと思います :)

    もし、デモのソースおよびGridCellComboクラスを見ても実装が分からないようでしたら具体例を示せる可能性はありますので再度書き込んでいただければと思います。

    あと、コメントは最新エントリではなく当該エントリに付けていただけると助かります。
    と言うことで、コメントを当該エントリにもコピペさせていただきます。ご了承ください。

    #デモ側をダウンロードする方が良いと書いておけば良かったですね~当該エントリを修正しておきました。
    #混乱させたようで、申しわけないです。

  3. 4月 5th, 2009 | 10:22 AM

    やはり、IEは古いのが良いのかなぁ…

    基本新しいもの好きなので、α版には抵抗があるもののβ版などは大好物です とは言っても最近は安定性重視になっちゃってますけど。
    某社ではいまだにIE6が標準でIE7はプリインストー…

Leave a reply