OS:Windows 7の32ビット 研究開発をツール:Visual Studioの2008グリッドコントロール:実行時エラーのVisual StudioでのWindows XPで実行して2008
問題: のWindows 7で実行すると、それはOKですが、XPでありDEBUGモードでのアサーションエラー、RELEASEモードでの目に見えないグリッドコントロールエラーです。
状況(あなたは下の写真のようにそれを見ることができるように):
グリッドコントロールクラスを、私はcode-projectからダウンロードした、プログラムで使用しました。 (私はstackoverflowでファイルをアップロードすることはできないと思う?それが必要な場合は、私に教えてください。)
私はこのクラスをVS 6.0で使用しました。 VS 9.0で初めて使用しました。 VS 6.0で使用してもエラーはありませんでした。
Windows 7およびXPでプログラムをコンパイルすると、コンパイルエラーは発生しません。
Windows 7では、DEBUGモードとRELEASEモードの両方でうまく動作します。
Windows XPでは、EXEファイルをDEBUGフォルダに実行すると、アサーションエラーが発生します。そして、RELEASEフォルダにexeファイルを実行すると、グリッドコントロールが表示されません。
また、Visual StudioでXPでコンパイルを試みてエラーがないかどうかを確認しましたが、実行時エラーが発生します。
エラー:
デバッグアサートに失敗しました!プログラム:... ファイル:.../gridctrl_src/gridcell.cpp ライン:228あなたのプログラム は、アサーションの失敗を引き起こす可能性があります方法については
、 上のVisual C +ドキュメントがアサート を参照してください。
以下はエラーラインのgridcell.cppソースコードです。
/////////////////////////////////////////////////////////////////////////////
// CGridDefaultCell
CGridDefaultCell::CGridDefaultCell()
{
#ifdef _WIN32_WCE
m_nFormat = DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX;
#else
m_nFormat = DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX | DT_END_ELLIPSIS;
#endif
m_crFgClr = CLR_DEFAULT;
m_crBkClr = CLR_DEFAULT;
m_Size = CSize(30,10);
m_dwStyle = 0;
#ifdef _WIN32_WCE
LOGFONT lf;
GetObject(GetStockObject(SYSTEM_FONT), sizeof(LOGFONT), &lf);
SetFont(&lf);
#else // not CE
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(NONCLIENTMETRICS);
VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));
SetFont(&(ncm.lfMessageFont));
#endif
}
ありがとうございます! VC6からVS2012にプロジェクトを移植しながら、
勉強のための良い状況 –