vc6.0開發的影像采集軟體,在vs2013上編譯后在Win8下采集到的影像無法另存為另外一個檔案名,只能用滑鼠點擊已經有的檔案名,然后才能保存,代碼如下,有勞各位兄弟幫忙看下,萬分感謝!XP下沒有這個問題!
char szSaveFilter[] = "BMP 檔案(*.BMP)|*.BMP|GIF 檔案(*.GIF)|*.GIF|PCX 檔案(*.PCX)|*.PCX|TARGA 檔案(*.TGA)|*.TGA|JPEG 檔案(*.JPG)|*.JPG|TIF 檔案(*.TIF)|*.TIF||";
void CImageProDoc::OnFileSaveAs() //另存為錯誤
{
// TODO: Add your command handler code here
static int nIndex = 1;
CFileDialog FileDlg( FALSE, NULL, NULL, OFN_HIDEREADONLY, szSaveFilter );
FileDlg.m_ofn.nFilterIndex = (DWORD) nIndex;
if( FileDlg.DoModal() == IDOK )
{
nIndex = (int) FileDlg.m_ofn.nFilterIndex;
CMainFrame *pFrame = (CMainFrame *) AfxGetMainWnd();
CChildFrame *pChild = (CChildFrame *) pFrame->MDIGetActive();
CImageProView *pView = (CImageProView *) pChild->GetActiveView();
if( nIndex == 5 )
{
if( pView->m_pImage->GetNumBits() != 24 )
{
AfxMessageBox( "必須是 24 位的彩色圖象才能存為JPEG檔案!" );
return;
}
CBrightness Brightness;
strcpy( Brightness.m_szTitle, "設定品質" );
strcpy( Brightness.m_szLabel, "品質百分比" );
if( Brightness.DoModal() != IDOK ) return;
if( pView->m_pImage != NULL )
pView->m_pImage->SetQuality( Brightness.m_nBrightness / 2 );
}
if( pView->m_pImage != NULL )
{
CString PathName = FileDlg.GetPathName();
int nFindIndex = PathName.Find( "." );
if( nFindIndex != -1 ) PathName = PathName.Left( nFindIndex );
PathName += CImageObject::szExtensions[nIndex-1];
pView->m_pImage->Save( PathName );
CString FileName = FileDlg.GetFileName();
nFindIndex = FileName.Find( "." );
if( nFindIndex != -1 ) FileName = FileName.Left( nFindIndex );
FileName += CImageObject::szExtensions[nIndex-1];
FileName.MakeUpper();
pChild->SetWindowText( FileName );
SetPathName( PathName );
if( nIndex == 5 )
{
pView->m_pImage->Load( PathName );
pView->InvalidateRect( NULL, FALSE );
pView->UpdateWindow();
}
}
}
}
uj5u.com熱心網友回復:
應在VC6下編譯。VC6EN http://pan.baidu.com/s/1jImOtAe
uj5u.com熱心網友回復:
前輩vc6.0下編譯的,能否在win8下運行?另外現在系統都至少是win7了,怎么才能安裝vc6啊?uj5u.com熱心網友回復:
不能保存,有出錯資訊嗎?uj5u.com熱心網友回復:
沒有任何出錯資訊,如果用滑鼠點一下任何一個已經有了的檔案名,則可以保存,但如果想把檔案名改動一點,點保存的按鈕,程式就沒有反應,這個程式已經使用多年,只是這次我拿出來維護一下,維護的時候就用的vs2013,編譯的時候也遇到了一些多位元組的問題,都陸續解決了,現在就是""另存為""用不了,圖片經過修改后,直接保存都沒有問題,原因就出在另存為的時候,只要改動檔案名,就沒辦法保存.uj5u.com熱心網友回復:
OFN_HIDEREADONLY, 有問題 ?uj5u.com熱心網友回復:
我剛剛用vs2010編譯,問題解決,但為什么13版本不行?
uj5u.com熱心網友回復:
剛把影像處理了再另存為,成功一次,后面又不行了
uj5u.com熱心網友回復:
找到肯定出現另存為不成功的情況,然后單步除錯你的另存為的函式看看。。。 這樣應該是能找到問題所在的。另外VC6在window7,下是可以安裝的。window7上我一直用啊,裝完下載個修復VC6在window7以上系統出現的新建和打開的錯誤
uj5u.com熱心網友回復:
設定斷點除錯運行看看,是什么地方例外或卡住的uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
非常感謝趙4老師,我下載了這個版本的6.0,在win7下安裝成功了,編譯也很順利,用13,10版本存在的這個"另存為"的Bug現在沒有了!個人覺得十多年以前用6.0開發的還是用6.0維護好,說實話跨版本除錯耽誤了我不少時間現在還有一個麻煩事情,6.0生成的DeBug版本在win7 32位可以正常運行,但是Realise版本在win8 64位 一個統計資料時就會彈出報錯,提示叫我除錯,這又是啥情況!!!
uj5u.com熱心網友回復:
補充:Debug版本32,64位都可以用,但Realise版本只能在32位下用uj5u.com熱心網友回復:
1.在出問題的Win8 64位電腦上安裝VC6,
2.在VC6中按F5運行
3.崩潰的時候在彈出的對話框按相應按鈕進入除錯,按Alt+7鍵查看Call Stack即“呼叫堆疊”里面從上到下列出的對應從里層到外層的函式呼叫歷史。雙擊某一行可將游標定位到此次呼叫的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。
該給我發個QQ大紅包了吧!
我的QQ:511606848
uj5u.com熱心網友回復:
那是一定要發一定要加的!!!!uj5u.com熱心網友回復:

檔案對話框 我見過幾種,早期的那種框很扁,顯示的專案很少。
后來的對話框xp 還是win7模式,左邊還能選擇我的電腦什么的。表單很大。
感覺這是win哪個表單控制元件版本問題。
uj5u.com熱心網友回復:
這兩天再做硬體除錯 ,過幾天換換思路uj5u.com熱心網友回復:
趙4老師那qq沒WX?給個WX吧
uj5u.com熱心網友回復:
我平常不用WX
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88167.html
標籤:基礎類
