CStdioFile類打開文件,用TextOut輸出時亂碼

字號:

在寫onFileOpen函數(shù)是,在打開文件后,我用了CDC::TextOut函數(shù)將其輸出到用戶區(qū)窗口上,但是遇到一個問題,就是在輸出中文的時候出現(xiàn)了亂碼……于是,我展開了大量搜索,終于把這個問題解決了……
    源代碼如下:
    void CTextReadView::OnFileOpen()
    {
    // TODO: 在此添加命令處理程序代碼
    CString fpathname;
    static TCHAR BASED_CODE szFilter[] = _T("文本文檔(*.txt)|*.txt|")
    _T("All Files (*.*)|*.*||");
    CFileDialog openDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter,NULL,0,TRUE);
    if(openDlg.DoModal()==IDOK)
    {
    fpathname=openDlg.GetPathName();
    CStdioFile ofile(fpathname,CFile::modeRead);
    CString ofstr;
    CClientDC dc(this);
    CFont font;
    font.CreatePointFont(200,_T("微軟雅黑"),NULL);
    dc.SelectObject(&font);
    TEXTMETRIC tm;
    dc.GetTextMetrics(&tm);
    CPoint pt;
    pt=0;
    while(ofile.ReadString(ofstr))
    {
    dc.TextOut(pt.x,pt.y,ofstr);
    pt.y=pt.y+tm.tmHeight;
    }
    }
    }
    如果就這樣直接編譯運行,在輸出是中文會亂碼,解決方法如下:
    打開項目屬性,修改項目屬性里面的“字符集”能夠解決這個問題呢,但是同時要改“公共語言運行庫支持”,否則編譯時會報錯得……
    但是這樣仍然只能顯示ANSI格式的文本,其他格式的文本都會不同程度的亂碼……怎么辦了,一位高手提供了一種解決方法,就是把其他的編碼格式轉(zhuǎn)化成ANSI格式,那么不就行了。