« Windows Live メール 2010 送信メール文字化け (暫定対策編) | トップページ | EXCELで数値/文字列しかコピーできない »

CFileDialogと0x000006BA:RPCサーバを利用できませんエラー

VC6時代のプロジェクトをVC9(VisualStudio2008 SP1)に移植&64bit化するハメになり、まぁ幾多のトラブルを乗り越えたのですが、一番ムカついた症状をメモしておきます。

一通りビルドを通し実行テストを行うと問題なし。
で、「ファイルを開く」を選択すると、「0x000006BA:RPCサーバを利用できません」で強制デバッグモードへ。(当然「名前をつけて保存」も同じ)

たとえば、こんなシンプルなコード

CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"All Files|*.*||",this);
dlg.DoModal(); //→「RPCみつからないエラー」

とか

CFileDialog  dlg(TRUE);
dlg.DoModal(); //→「RPCみつからないエラー」

で、ほとんどすべてをデフォルトにしてもエラー。

結論的には、VisualStudio2008で拡張されたCFileDialogの引数(BOOL bVistaStyle)がデフォルトでTRUEなのが原因でした。(CFileDialog::DoModal()をステップ実行して見つけた)
対策としては

CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"All Files|*.*||",this,0,FALSE);

として無事動作確認完了。

あとはCFileDialogを検索して「0,FALSE」をコピーして終了。
新しい機能は標準でONにしたい&XP以前を皆殺しにしたいのは理解できるのですが、もう少しマシなエラーを表示してもらえると助かります。

つか、MSDN(VisualStudio2008)の該当欄を見ると

bVistaStyle パラメータは、Windows Vista でのみ適用できます。以前のバージョンの Windows では、このパラメータは無視されます。bVistaStyleTRUE に設定し、Windows Vista でプログラムをコンパイルすると、新しい Vista スタイルのファイル ダイアログが使用されます。それ以外の場合は、以前の MFC スタイルのファイル ダイアログが使用されます。このように、現在のプロジェクトを Windows Vista 環境で再コンパイルすると、新しい Vista ダイアログ ボックスを利用できるようになります。詳細については、「CFileDialog クラス」を参照してください。

ってことで、Windows7でコンパイルした場合にbVistaStyleが無視されないのは良いのですが、現象として「RPCエラー」になるのはなかなか想像できないと思います。VisualStudio2010以降だと修正されてるのか気になります。

大人の事情で全く画がないのですが、そこは察してください。

« Windows Live メール 2010 送信メール文字化け (暫定対策編) | トップページ | EXCELで数値/文字列しかコピーできない »

VS2008(VC9)」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: CFileDialogと0x000006BA:RPCサーバを利用できませんエラー:

« Windows Live メール 2010 送信メール文字化け (暫定対策編) | トップページ | EXCELで数値/文字列しかコピーできない »

カレンダー

  • keisan
無料ブログはココログ
2019年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30