0

次のように、静的テキストウィジェットにテキストを入れようとしています:

m_StartupTime.SetWindowText(someStringVariable);

エラーが発生します:

'CWnd::SetWindowTextA': パラメーター 1 を 'std::string' から 'LPCTSTR' に変換できません

メソッドを使用してみましたc.str()が、実行すると、プログラムは正常にコンパイルされますが、実行時にクラッシュし、エラーがスローされます。

エラー

問題が変換に関連しているか、それ以外に関連しているかを把握していますか?

CString を使用しても問題は解決しません。Unicode 文字セットからマルチバイトに切り替えようとしましたが、成功しませんでした。ああ、私はMFCで開発しています。

編集:解決策を見つけました!CString クラスを使用しました。

string a = "smth";
CString str(a.c_str());
4

2 に答える 2

5

[アサーション]ダイアログには、アサーションが発生している場所が表示されます:ファイルwinocc.cpp、行246。

コードを見ると、これはそのファイルの行です。

ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));

あなたのアサーションは文字列とは何の関係もないようですが、コントロールは(まだ?)存在しません。つまり、コントロールウィンドウが無効であるか、存在しません。

于 2012-10-03T14:29:45.463 に答える
1
CA2T str( someStringVariable.c_str() );
m_StartupTime.SetWindowText(str);

someStringVariable が std::string 型であると仮定します。これをコンパイルするには、AtlBase.h を含めます。

于 2012-10-03T12:40:48.723 に答える