2010-12-15 7 views
0
LRESULT CFlashWnd::OnScannerProgress(WPARAM wParam, LPARAM lParam) 
{ 
    ScannerProgress *pEvent = (ScannerProgress *)wParam; 

    CString scannerAreaText = _T(""); 
    scannerAreaText.Format(_T("<B>Scanning%3A</B> <font face='Arial' size='10'>%s</font>"), pEvent->pszScanner); 

    CString scanProgressText = _T(""); 
    scanProgressText.Format(_T("<B>Scan Progress%3A</B> <font face='Arial' size='10'>%f</font>"), pEvent->dwScanPercent); 

    CString scanProgressBarValue = _T(""); 
    scanProgressBarValue.Format(_T("%f%"), pEvent->dwScanPercent); 

    if(pEvent->pszScanItem) 
     free((void *)pEvent->pszScanItem); 

    if(pEvent->pszScanner) 
     free((void *)pEvent->pszScanner); 

    delete pEvent; 

    return 0; 
} 

私はファンキーな値やクラッシュを続けています。どんな提案も大歓迎です。Format()を使用してフォーマットされたCStringで無効なデータを取得するのはなぜですか?

答えて

1

わかりませんが、フォーマット文字列で%3Aを再確認する必要があります。ご存知のように、パーセント記号はプレースホルダを示します。

+0

ええ、それは私の心を越えた最初のものでした。しかし、Format()を使用している間、エスケープ文字に関するウェブサイトの詳細はそれほど多くありません。 –

+0

私はあなたの返事を理解していません。私はそれが問題だと思う。その部分を削除して、問題がなくなるかどうかを確認するのに、ほんの数秒しかかかりません。私が誤解されていない場合は、%%を使用して出力に1つのパーセント記号を示すことができます。 –

+0

はい、ありがとうジョナサン。 %%は完璧に働いた。 –

2

%3Aの代わりに%% 3Aを使用してください。

関連する問題