win32使用OPENFILENAME瀏覽檔案視窗

2021-06-05 15:19:27 字數 1156 閱讀 4505

使用win32 api開啟 瀏覽檔案視窗,使用openfilename結構體來實現這個功能。

**如下:

openfilename ofn;

wchar* szfile = new wchar[512];

wchar* szfiletitle = new wchar[512];

memset(&ofn, 0, sizeof(ofn));

memset(szfile, 0, sizeof(wchar)*512);

memset(szfiletitle, 0, sizeof(wchar)*512);

ofn.lstructsize = sizeof(ofn);

ofn.hwndowner = ymain->m_hwnd;

ofn.hinstance = ymain->m_hinst;

ofn.lpstrfilter = l"all file\0*.*\0";

ofn.nfilterindex = 1;

ofn.lpstrfile = szfile;

ofn.nmaxfile = sizeof(wchar)*512;

ofn.lpstrfiletitle = szfiletitle;

ofn.nmaxfiletitle = sizeof(wchar)*512;

ofn.flags = ofn_filemustexist | ofn_explorer;

// 按下確定按鈕

bool ok = getopenfilename(&ofn);

if( ok )

delete szfile;

delete szfiletitle;

其中,有個地方需要注意一下,要是不使用以下的處理話,會出現無法彈出瀏覽視窗介面的問題:

wchar* szfile = new wchar[512];

wchar* szfiletitle = new wchar[512];

關於這兩個變數,最好就需要先分配空間,如果直接定義為陣列的話,就會導致瀏覽檔案的視窗彈不出來。原因在於,這兩個變數是區域性變數,定義為陣列的話,空間占用太大了,無法自動分配出來,需要專門分配記憶體才行。

上述**在debug和release版中都測試過,可以正常的彈出開啟的視窗。

win32使用拖放檔案

於win32規劃,使用拖放檔案操作,非經常見 不否認有些人喜歡用button開啟 中使用拖拽,非常easy,僅僅須要在建立窗體的時候使用ws ex acceptfiles識別符號,然後使用乙個訊息函式去處理 當然,這是屬於窗體的擴充套件風格。所以須要使用createwindowex來建立 cw us...

Win32程式設計

win32 malloc函式的底層實現是win32api utf 16編碼以16位無符號整數為單位,注意是16位為乙個單位,不是乙個字元就只有16位,這個要看字元的unicode編碼處於什麼範圍而定,有可能是2個位元組,也可能是4個位元組現在機器上的unicode編碼一般就是指utf 16 以兩個位...

win32彙編使用win32 api實現字串拷貝

字串拷貝,呼叫win32的lstrcpy函式 拷貝了以後用訊息框顯示一下 386 model flat,stdcall option casemap none include s masm32 include windows.inc include s masm32 include user32.i...