2011-07-12 4 views
0

私は最近、2005年から2010年にVC++プロジェクトをアップグレードしましたが、リソースを除いてすべて正常に動作します。私は2つのページ、すべてのダイアログは、同じリソースファイル内のタブコントロールを持って、TabControlが見つかりましたが表示されますが、すべてのページ(一般的な_AfxCheckDialogTemplate()エラー)ロードに失敗します。TabControlがVS2010で動作しない

すべてのダイアログが同じファイルにあるので、これは非常に奇妙です。 AfxSetResourceHandle()を正しい値に設定しました。

私は次の結果でいくつかのテストを行いました: - DoModalで直接プロパティページを読み込む:最初のコントロールのDDX_Text()で失敗します。 - DoModalで新しく作成したPPageを読み込む:ok! - TabControlで同じPPageを読み込む:AfxSetResourceHandle()で失敗する - TabControlで新しいPPageを読み込む:も失敗します。

前述のように、プロジェクトは単にVS2005から移行され、うまく機能していました。 また、私のホストをXP 32から7つの64ビットに変更しましたが、pbはリソースがVSで処理される方法に関連している可能性が高いと思います。私はそれがすでに多くの問題を抱えていることを覚えています。特に、includeで共通のリソースを使用する場合は特にそうです。

今何を試してみるか考えてみましょうか? VS2010のTabControlsに問題はありますか?私はたくさんのグーグルで探せましたが、これまで興味深いものは見つかりませんでした。 VS2005プロジェクトからリソースを移行する別の方法はありますか?すべてのリソースを再作成するのはかなり長いでしょう。 私は単にVS2005に戻すべきですか?任意のヒントについて

おかげで、

アラン

答えて

0

たぶん、64ビットへの移行は「フェイル作成」するためにあなたのプロパティページ上の1つまたは複数のコントロールを引き起こしています。通常これはCPropertySheet :: Create()によってFALSEを返すことによって報告される必要があります。 DoModal()でページを表示するときに発生するWM_INITDIALOGハンドラを取得すると、DDX_Control関数が失敗します。つまり、最初のコントロールを作成できないため、重大なエラーです。 MSDNのInitCommonControlsEx()に関するディスカッションを参照し、アプリケーションが正しく呼び出しているかどうかを確認してください。

+0

チップありがとう。 –

+0

私のプロジェクトでは欠けていましたが、修正後もエラーは同じです。しかし、他のプロジェクトと非常によく似た同じ構造のリソースをテストしたところ、うまく動いています...プロジェクトを再作成してリソースをインポートする必要があると思います...ありがとうございます! –

+0

あなたには不満があります。ダイアログを修正して、「失敗しない」スタイルにしてください。何が起こるか見る。 CDialog :: OnInitDialog()の内容をバイパスします(コメントアウトします)。どのコントロールが作成に失敗したかを見ることができます。成功! –

0

Pbが最後に修正されました:新しい.rcファイルが作成され、すべてのリソースがドラッグ&ドロップによって1つずつコピーされました。 2005年から2010年への移行が失敗したことがpbにあると思われます(最初はエディタでリソースを開くことも不可能でした!)。 これは、VC6から最初に移行され、含まれているリソースファイルを含む非常に古いプロジェクトです。たぶんこれを扱うにはVSはあまり良くありません... ありがとう

関連する問題