MFCにてEDITBOXに文字を表示する。

解決


はな  2004-02-17 02:44:12  No: 53187  IP: [192.*.*.*]

コンボボックスにて日付を選択してその選択した年から現在までの経過年月を取得したいのですが取得しようとすると文字化けして表示されます。

void S2InputSummaryDlg::calcPassYear()
{
  CComboBox*  pCB = (CComboBox*)GetDlgItem( IDC_COMPLETION_YEAR_CBO );
  int iNum = pCB->GetCurSel();
  CString cValue;
  pCB->GetLBText ( iNum, cValue );
  int iYear = ::atoi( cValue );

  //-------------------------------
  // 当該システムの日付、時刻を取得
  //-------------------------------
  SYSTEMTIME  SystemTime;
  ::GetLocalTime( &SystemTime );
  char  cbuffer[MAX_PATH];
  ::_itoa( SystemTime.wYear, cbuffer, 10 );
  
  CEdit*  pEdt;
  int  zValue;
  pEdt = (CEdit*)GetDlgItem( IDC_PASS_YEAR_EDIT );
  if(  SystemTime.wYear - iYear < 0 )
    pEdt->SetWindowText( 0 );
  else
      zValue = SystemTime.wYear - iYear;
              pEdt->SetWindowText( zValue ) ;
}
エラーはSetWindowTextA' : 1 番目の引数を 'int' から 'const char *' に変換できません。です。

よろしくお願いします。
文字化けはポインタへの変換をした(と思う)状態で実行した時に起こりました…

編集    削除
YuO  2004-02-17 07:37:21  No: 53188  IP: [192.*.*.*]

そのまんまだと思いますが……。

intをそのままconst char *,つまりは文字列にすることはできません。
CString::Formatを使ったり,wsprintfを使うなどしてintを文字列にするか,
CWnd::SetDlgItemIntを使うかする必要があります。

ちなみに,
>         pEdt->SetWindowText( 0 );
は,
pEdt->SetWindowText(static_cast<const char *>(0));
だから,空ポインタを渡していることになります。
#数値0ではないことに注意。

編集    削除
はな  2004-02-20 00:40:27  No: 53189  IP: [192.*.*.*]

v(^o^)v

編集    削除
はな  2004-02-20 22:30:32  No: 53190  IP: [192.*.*.*]

お返事ありがとうございます。
解決印をどなたかにつけてもらいましたが…

 if(  SystemTime.wYear - iYear < 0 )
    pEdt->SetWindowText( 0 );
 else
    zValue = SystemTime.wYear - iYear;
    Edit1.Format("%d", zValue);
    pEdt->SetWindowText( Edit1 );
elseの方は↑でうまくいきました。

 if(  SystemTime.wYear - iYear < 0 )
の時の0が表示されないのですが…
同様に0を表示しようとすると
 else 文が if と一致しません。とエラーがでてしまいます。

よろしくお願いします。

編集    削除
val  2004-02-21 00:01:36  No: 53191  IP: [192.*.*.*]

if(  SystemTime.wYear - iYear < 0 )
    pEdt->SetWindowText( 0 );
 else{
    zValue = SystemTime.wYear - iYear;
    Edit1.Format("%d", zValue);
    pEdt->SetWindowText( Edit1 );
}
elseの{}が抜けてるようですが

編集    削除
はな  2004-02-21 00:23:09  No: 53192  IP: [192.*.*.*]

申し訳ありません…

解決です。お手数おかけいたしました…
本当にごめんなさい…

編集    削除
YuO  2004-02-23 10:51:34  No: 53193  IP: [192.*.*.*]

>     pEdt->SetWindowText( 0 );

だからこれは間違いだと書いているのに……。
数値の0と数字の'0'と文字列の"0"はちゃんと区別できていますか?

編集    削除