線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5737
推到 Plurk!
推到 Facebook!

::CreateFile 的問題 (VS2008 C++ MFC)

答題得分者是:ikk
yensj
一般會員


發表:16
回覆:13
積分:5
註冊:2008-09-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-28 22:32:27 IP:220.136.xxx.xxx 訂閱
請問板上的前輩  小弟在::CreateFile的時候(讀檔案),小弟將所要讀的檔案寫死路徑了,想要不跳出開啟舊檔的這個面板而完成::CreateFile的動作,請問有方法辦的到嗎?
以下為小弟的code

[code cpp]
HRESULT hr = S_OK;
WCHAR FileNameBuffer[MAX_PATH 1] = {0};
OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = m_hWnd;
ofn.hInstance = ::AfxGetResourceHandle();
ofn.lpstrFilter = L"Fingerprint Templates(*.fpt)\0*.fpt";
ofn.lpstrFile = FileNameBuffer;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST;
ofn.lpstrDefExt = L".fpt";

if (GetOpenFileName(&ofn)) {
HANDLE hFile = ::CreateFile(L"C:\\Documents and Settings\\Administrator\\桌面\\789.fpt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (INVALID_HANDLE_VALUE != hFile) {
DWORD dwWritten = 0;

DWORD dwSize = GetFileSize(hFile, NULL);
if (dwSize) {
BYTE* buffer = new BYTE[dwSize];
if (!buffer) {
::CloseHandle(hFile);
//_com_issue_error(E_OUTOFMEMORY);
}

DWORD dwNumRead = 0;
if (::ReadFile(hFile, buffer, dwSize, &dwNumRead, 0)) {
delete [] m_RegTemplate.pbData;

m_RegTemplate.pbData = buffer;
m_RegTemplate.cbData = dwNumRead;
}
else {
delete [] buffer;
::CloseHandle(hFile);
// _com_issue_error(HRESULT_FROM_WIN32(::GetLastError()));
}
::CloseHandle(hFile);
}
else {
::CloseHandle(hFile);
// _com_issue_error(E_FAIL);
}
}
}

[/code]
編輯記錄
yensj 重新編輯於 2009-05-29 00:04:18, 註解 無‧
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-03 09:21:00 IP:163.28.xxx.xxx 訂閱
不要執行GetOpenFileName() 就行
------
FPGA驗證, FPGA開發平台, http://smims.com
yensj
一般會員


發表:16
回覆:13
積分:5
註冊:2008-09-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-25 04:55:05 IP:220.136.xxx.xxx 訂閱
多謝前輩的指點^^
系統時間:2024-04-25 6:47:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!