vc中如何獲取開啟檔名

2021-06-12 05:38:14 字數 1573 閱讀 3851

在編制程式的過程中,很多時候我們需要從外部儲存器中獲取檔名。如果你知道檔案路徑,那很容易解決,但是不知道檔案路徑的話,怎麼辦呢?其實答案地球人都知道,那就是vc提供的「開啟檔案對話方塊」。怎麼使用它呢?請看**:

#include //包含windows.h標頭檔案

#include //包含通用對話方塊標頭檔案.

static openfilename ofn ;//定義開啟檔案結構

tchar openname[100][max_path]=,//定義二個儲存開啟檔名字元陣列.

openbuffer[100][max_path]=;

void popfileinitialize (hwnd) ; //宣告開啟檔名結構初始化函式

bool popfileopendlg (hwnd, ptstr) ; //宣告開啟檔案對話方塊函式

bool getopenname(hwnd hwnd) ;//宣告獲取開啟檔名函式

void popfileinitialize (hwnd hwnd)//開啟檔案結構初始化函式

bool popfileopendlg (hwnd hwnd, ptstr pstrfilename)//開啟檔案對話方塊函式

//定義獲取開啟檔名函式

bool getopenname(hwnd hwnd)

;//定義乙個接受開啟檔名的臨時字元陣列

if (popfileopendlg (hwnd, szfilename))//判斷是否選中檔案;

i++;

icount++;}}

else

return false ;//如果沒選中檔案則返回假

if(invalid_handle_value==

(hfile =createfile(openbuffer[0],generic_read,

0,0,open_existing,file_attribute_normal,0)))

{for(i=0;i

這是我寫的函式,專門用於獲取檔名,其中藍色的**是照抄《windows程式設計》一書的。對於這個函式來說,最複雜的應是openfilename結構,很多初學者見到它都像見到鬼一樣,其實不用怕,只有你有「朱古力」就行了(打鬼用「朱古力」嘛,星爺說的)。看看上面的紅色**,填入你需要的,其餘的照抄就行了。其實很多東西都沒有它外表那麼可怕,用過一兩次後,你就會慢慢掌握它的。這一招真是百試百靈,比「萬金油」還好用,元芳你怎麼看?

我們再來看看上面的綠色**,它定義了乙個字元陣列szfilename,這是專門儲存從開啟檔案方塊返回檔名用的。檔名的格式是這樣的,如果是單個檔案,則是檔名全路徑;如果是多個檔案,則開頭是檔案路徑,然後是檔名,中間用'\0'隔開,而且兩種情況末尾都是加上兩個'\0'。我這裡用了兩個互相巢狀的while迴圈將檔名析出,分個存入二維陣列openbuffer,然後再區分單個與多個檔名的情況分別處理。

迴圈是乙個初學者比較頭痛的問題,其實不必太在意,只要弄清楚內在的邏輯,慢慢地你就能掌握它。迴圈的例子在現實中也是司空見慣的,你看大街小巷的「反串男」,說穿了也是「迴圈」惹的禍!

最後總結一下,這個函式最難處其實就在於迴圈的設計,其它的都沒什麼,都是些api的呼叫罷了。謝謝你閱讀這篇文章,祝你好運!

獲取開啟檔案的路徑和檔名

system.io.path.getfilename filename 返回帶副檔名的檔名 system.io.path.getfilenamewithoutextension filename 返回不帶副檔名的檔名 system.io.path.getfullpath filename 返回檔案所...

VC實現檔案拖拽獲取檔名

假設在乙個對話方塊程式中,有兩個文字框 idc edit file1 和idc edit file2 和兩個按鈕 idc btn 1 和idc btn 2 這兩個文字框中要輸入兩個不同的檔名稱,從而完成相應的操作 如比較兩個檔案的差異 我們不得不通過兩個按鈕來實現兩次 開啟檔案 的過程 相信我,這個...

C VC 如何開啟長檔名的檔案

c vc 如何開啟長檔名的檔案 概述 最近本人在操作檔案的時候,碰到了長檔名,即絕對路徑 檔名總長度大於等於260位元組,這些長檔名直接使用fopen會失敗的。本文舉例描述了,怎麼樣成功首席執行官檔名fopen,從而順利讀寫 建立等檔案操作,滿足了大部分檔案操作的需要。編譯環境 vs2010 讀操作...