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

解決


はな  2004-02-17 02:44:12  No: 53187

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

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

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

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

v(^o^)v


はな  2004-02-20 22:30:32  No: 53190

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

 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

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

申し訳ありません…

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


YuO  2004-02-23 10:51:34  No: 53193

>     pEdt->SetWindowText( 0 );

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加